PageSourceSearch

https://www.destination-larochesuryon.fr/wp-content/themes/otrocheyon/assets/dist/js/app-front-page.min.js

js destination-larochesuryon.fr collected 2026-10-05 09:50:46 UTC 647,309 bytes, 17,021 lines download raw bytes

vendor: 3,657 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = "./wp-content/themes/otrocheyon/assets/src/js/app-front-page.js");
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "./.modernizrrc.js":
90/*!*************************!*\
91  !*** ./.modernizrrc.js ***!
92  \*************************/
93/*! no static exports found */
94/***/ (function(module, exports) {
95
96function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
97;
98(function (window) {
99  var hadGlobal = 'Modernizr' in window;
100  var oldGlobal = window.Modernizr; /*! modernizr 3.6.0 (Custom Build) | MIT *
101                                    * https://modernizr.com/download/?-backgroundcliptext-flexbox-objectfit-promises-serviceworker-touchevents-setclasses !*/
102  !function (e, n, t) {
103    function r(e, n) {
104      return _typeof(e) === n;
105    }
106    function o() {
107      var e, n, t, o, i, s, a;
108      for (var l in C) if (C.hasOwnProperty(l)) {
109        if (e = [], n = C[l], n.name && (e.push(n.name.toLowerCase()), n.options && n.options.aliases && n.options.aliases.length)) for (t = 0; t < n.options.aliases.length; t++) e.push(n.options.aliases[t].toLowerCase());
110        for (o = r(n.fn, "function") ? n.fn() : n.fn, i = 0; i < e.length; i++) s = e[i], a = s.split("."), 1 === a.length ? Modernizr[a[0]] = o : (!Modernizr[a[0]] || Modernizr[a[0]] instanceof Boolean || (Modernizr[a[0]] = new Boolean(Modernizr[a[0]])), Modernizr[a[0]][a[1]] = o), w.push((o ? "" : "no-") + a.join("-"));
111      }
112    }
113    function i(e) {
114      var n = S.className,
115        t = Modernizr._config.classPrefix || "";
116      if (_ && (n = n.baseVal), Modernizr._config.enableJSClass) {
117        var r = new RegExp("(^|\\s)" + t + "no-js(\\s|$)");
118        n = n.replace(r, "$1" + t + "js$2");
119      }
120      Modernizr._config.enableClasses && (n += " " + t + e.join(" " + t), _ ? S.className.baseVal = n : S.className = n);
121    }
122    function s(e, n) {
123      return !!~("" + e).indexOf(n);
124    }
125    function a() {
126      return "function" != typeof n.createElement ? n.createElement(arguments[0]) : _ ? n.createElementNS.call(n, "http://www.w3.org/2000/svg", arguments[0]) : n.createElement.apply(n, arguments);
127    }
128    function l() {
129      var e = n.body;
130      return e || (e = a(_ ? "svg" : "body"), e.fake = !0), e;
131    }
132    function u(e, t, r, o) {
133      var i,
134        s,
135        u,
136        f,
137        c = "modernizr",
138        d = a("div"),
139        p = l();
140      if (parseInt(r, 10)) for (; r--;) u = a("div"), u.id = o ? o[r] : c + (r + 1), d.appendChild(u);
141      return i = a("style"), i.type = "text/css", i.id = "s" + c, (p.fake ? p : d).appendChild(i), p.appendChild(d), i.styleSheet ? i.styleSheet.cssText = e : i.appendChild(n.createTextNode(e)), d.id = c, p.fake && (p.style.background = "", p.style.overflow = "hidden", f = S.style.overflow, S.style.overflow = "hidden", S.appendChild(p)), s = t(d, e), p.fake ? (p.parentNode.removeChild(p), S.style.overflow = f, S.offsetHeight) : d.parentNode.removeChild(d), !!s;
142    }
143    function f(e) {
144      return e.replace(/([A-Z])/g, function (e, n) {
145        return "-" + n.toLowerCase();
146      }).replace(/^ms-/, "-ms-");
147    }
148    function c(n, t, r) {
149      var o;
150      if ("getComputedStyle" in e) {
151        o = getComputedStyle.call(e, n, t);
152        var i = e.console;
153        if (null !== o) r && (o = o.getPropertyValue(r));else if (i) {
154          var s = i.error ? "error" : "log";
155          i[s].call(i, "getComputedStyle returning null, its possible modernizr test results are inaccurate");
156        }
157      } else o = !t && n.currentStyle && n.currentStyle[r];
158      return o;
159    }
160    function d(n, r) {
161      var o = n.length;
162      if ("CSS" in e && "supports" in e.CSS) {
163        for (; o--;) if (e.CSS.supports(f(n[o]), r)) return !0;
164        return !1;
165      }
166      if ("CSSSupportsRule" in e) {
167        for (var i = []; o--;) i.push("(" + f(n[o]) + ":" + r + ")");
168        return i = i.join(" or "), u("@supports (" + i + ") { #modernizr { position: absolute; } }", function (e) {
169          return "absolute" == c(e, null, "position");
170        });
171      }
172      return t;
173    }
174    function p(e) {
175      return e.replace(/([a-z])-([a-z])/g, function (e, n, t) {
176        return n + t.toUpperCase();
177      }).replace(/^-/, "");
178    }
179    function m(e, n, o, i) {
180      function l() {
181        f && (delete j.style, delete j.modElem);
182      }
183      if (i = r(i, "undefined") ? !1 : i, !r(o, "undefined")) {
184        var u = d(e, o);
185        if (!r(u, "undefined")) return u;
186      }
187      for (var f, c, m, v, h, g = ["modernizr", "tspan", "samp"]; !j.style && g.length;) f = !0, j.modElem = a(g.shift()), j.style = j.modElem.style;
188      for (m = e.length, c = 0; m > c; c++) if (v = e[c], h = j.style[v], s(v, "-") && (v = p(v)), j.style[v] !== t) {
189        if (i || r(o, "undefined")) return l(), "pfx" == n ? v : !0;
190        try {
191          j.style[v] = o;
192        } catch (y) {}
193        if (j.style[v] != h) return l(), "pfx" == n ? v : !0;
194      }
195      return l(), !1;
196    }
197    function v(e, n) {
198      return function () {
199        return e.apply(n, arguments);
200      };
201    }
202    function h(e, n, t) {
203      var o;
204      for (var i in e) if (e[i] in n) return t === !1 ? e[i] : (o = n[e[i]], r(o, "function") ? v(o, t || n) : o);
205      return !1;
206    }
207    function g(e, n, t, o, i) {
208      var s = e.charAt(0).toUpperCase() + e.slice(1),
209        a = (e + " " + P.join(s + " ") + s).split(" ");
210      return r(n, "string") || r(n, "undefined") ? m(a, n, o, i) : (a = (e + " " + z.join(s + " ") + s).split(" "), h(a, n, t));
211    }
212    function y(e, n, r) {
213      return g(e, t, t, n, r);
214    }
215    var C = [],
216      x = {
217        _version: "3.6.0",
218        _config: {
219          classPrefix: "",
220          enableClasses: !0,
221          enableJSClass: !0,
222          usePrefixes: !0
223        },
224        _q: [],
225        on: function on(e, n) {
226          var t = this;
227          setTimeout(function () {
228            n(t[e]);
229          }, 0);
230        },
231        addTest: function addTest(e, n, t) {
232          C.push({
233            name: e,
234            fn: n,
235            options: t
236          });
237        },
238        addAsyncTest: function addAsyncTest(e) {
239          C.push({
240            name: null,
241            fn: e
242          });
243        }
244      },
245      Modernizr = function Modernizr() {};
246    Modernizr.prototype = x, Modernizr = new Modernizr();
247    var w = [],
248      S = n.documentElement,
249      _ = "svg" === S.nodeName.toLowerCase(),
250      b = "Moz O ms Webkit",
251      P = x._config.usePrefixes ? b.split(" ") : [];
252    x._cssomPrefixes = P;
253    var T = {
254      elem: a("modernizr")
255    };
256    Modernizr._q.push(function () {
257      delete T.elem;
258    });
259    var j = {
260      style: T.elem.style
261    };
262    Modernizr._q.unshift(function () {
263      delete j.style;
264    });
265    var z = x._config.usePrefixes ? b.toLowerCase().split(" ") : [];
266    x._domPrefixes = z, x.testAllProps = g, x.testAllProps = y, Modernizr.addTest("flexbox", y("flexBasis", "1px", !0)), Modernizr.addTest("promises", function () {
267      return "Promise" in e && "resolve" in e.Promise && "reject" in e.Promise && "all" in e.Promise && "race" in e.Promise && function () {
268        var n;
269        return new e.Promise(function (e) {
270          n = e;
271        }), "function" == typeof n;
272      }();
273    }), Modernizr.addTest("serviceworker", "serviceWorker" in navigator);
274    var k = x._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : ["", ""];
275    x._prefixes = k;
276    var E = x.testStyles = u;
277    Modernizr.addTest("touchevents", function () {
278      var t;
279      if ("ontouchstart" in e || e.DocumentTouch && n instanceof DocumentTouch) t = !0;else {
280        var r = ["@media (", k.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
281        E(r, function (e) {
282          t = 9 === e.offsetTop;
283        });
284      }
285      return t;
286    });
287    var N = function N(n) {
288      var r,
289        o = k.length,
290        i = e.CSSRule;
291      if ("undefined" == typeof i) return t;
292      if (!n) return !1;
293      if (n = n.replace(/^@/, ""), r = n.replace(/-/g, "_").toUpperCase() + "_RULE", r in i) return "@" + n;
294      for (var s = 0; o > s; s++) {
295        var a = k[s],
296          l = a.toUpperCase() + "_" + r;
297        if (l in i) return "@-" + a.toLowerCase() + "-" + n;
298      }
299      return !1;
300    };
301    x.atRule = N;
302    var L = x.prefixed = function (e, n, t) {
303      return 0 === e.indexOf("@") ? N(e) : (-1 != e.indexOf("-") && (e = p(e)), n ? g(e, n, t) : g(e, "pfx"));
304    };
305    Modernizr.addTest("objectfit", !!L("objectFit"), {
306      aliases: ["object-fit"]
307    }), Modernizr.addTest("backgroundcliptext", function () {
308      return y("backgroundClip", "text");
309    }), o(), i(w), delete x.addTest, delete x.addAsyncTest;
310    for (var A = 0; A < Modernizr._q.length; A++) Modernizr._q[A]();
311    e.Modernizr = Modernizr;
312  }(window, document);
313  module.exports = window.Modernizr;
314  if (hadGlobal) {
315    window.Modernizr = oldGlobal;
316  } else {
317    delete window.Modernizr;
318  }
319})(window);
320
321/***/ }),
322
vendor: 68,785 bytes, lines 323-346
323/***/ "./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.min.js":
324/*!**********************************************************************!*\
325  !*** ./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.min.js ***!
326  \**********************************************************************/
327/*! no static exports found */
328/***/ (function(module, exports, __webpack_require__) {
329
330/* WEBPACK VAR INJECTION */(function(jQuery) {// ==================================================
331// fancyBox v3.5.7
332//
333// Licensed GPLv3 for open source use
334// or fancyBox Commercial License for commercial use
335//
336// http://fancyapps.com/fancybox/
337// Copyright 2019 fancyApps
338//
339// ==================================================
340!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!</video>',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"><div class="fancybox-caption__body"></div></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}</p></div>',btnTpl:{download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg></a>',zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg></button>',arrowLeft:'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div></button>',arrowRight:'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div></button>',smallBtn:'<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg></button>'},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schlie&szlig;en",NEXT:"Weiter",PREV:"Zur&uuml;ck",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergr&ouml;&szlig;ern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:'+(t.innerWidth-e.documentElement.clientWidth)+"px;}</style>"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index<h-1)&&f.createSlide(t+1),(a||s.index>0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),a<f-h&&(a=f-h)),g>p&&(s=i.top*c-(e*c-e),s>0&&(s=0),s<p-g&&(s=p-g)),l.updateCursor(h,g),n.fancybox.animate(u,{top:s,left:a,scaleX:r,scaleY:c},o||366,function(){l.isAnimating=!1}),l.SlideShow&&l.SlideShow.isActive&&l.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;o.isAnimating||o.isMoved()||!a||"image"!=i.type||!i.isLoaded||i.hasError||(o.isAnimating=!0,n.fancybox.stop(a),e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||366,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,s=this,r=t.$content,c=t.$slide,l=t.width||t.opts.width,d=t.height||t.opts.height,u={};return!!(t.isLoaded&&r&&r.length)&&(e=n.fancybox.getTranslate(s.$refs.stage).width,o=n.fancybox.getTranslate(s.$refs.stage).height,e-=parseFloat(c.css("paddingLeft"))+parseFloat(c.css("paddingRight"))+parseFloat(r.css("marginLeft"))+parseFloat(r.css("marginRight")),o-=parseFloat(c.css("paddingTop"))+parseFloat(c.css("paddingBottom"))+parseFloat(r.css("marginTop"))+parseFloat(r.css("marginBottom")),l&&d||(l=e,d=o),i=Math.min(1,e/l,o/d),l*=i,d*=i,l>e-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t<a.width&&e<a.height:s&&(i=n.fancybox.getTranslate(s),i=i.width<a.width&&i.height<a.height),i},canPan:function(t,e){var o=this,i=o.current,a=null,s=!1;return"image"===i.type&&(i.isComplete||t&&e)&&!i.hasError&&(s=o.getFitPos(i),void 0!==t&&void 0!==e?a={width:t,height:e}:i.isComplete&&(a=n.fancybox.getTranslate(i.$content)),a&&s&&(s=Math.abs(a.width-s.width)>1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r<o.length;r++){var c=o[r];if("w"===c.postfix&&c.value>=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('<div class="fancybox-content'+(i.preload?" fancybox-is-hidden":"")+'"></div>').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("<div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents()),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("<div></div>"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("<div></div>").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["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^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity,
341"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i<d.length;++i){var s=d[i].split("=",2);2==s.length&&(u[s[0]]=decodeURIComponent(s[1].replace(/\+/g," ")))}}return l=t.extend(!0,{},o.params,a.opts[e],u),p="function"===t.type(o.url)?o.url.call(this,c,l,a):n(o.url,c,l),r="function"===t.type(o.thumb)?o.thumb.call(this,c,l,a):n(o.thumb,c),"youtube"===e?p=p.replace(/&t=((\d+)m)?(\d+)s/,function(t,e,n,o){return"&start="+((n?60*parseInt(n,10):0)+parseInt(o,10))}):"vimeo"===e&&(p=p.replace("&%23","#")),!1}}),h?(a.opts.thumb||a.opts.$thumb&&a.opts.$thumb.length||(a.opts.thumb=r),"iframe"===h&&(a.opts=t.extend(!0,a.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}})),t.extend(a,{type:h,src:p,origSrc:a.src,contentSource:f,contentType:"image"===h?"image":"gmap_place"==f||"gmap_search"==f?"map":"video"})):p&&(a.type=a.opts.defaultType)});var o={youtube:{src:"https://www.youtube.com/iframe_api",class:"YT",loading:!1,loaded:!1},vimeo:{src:"https://player.vimeo.com/api/player.js",class:"Vimeo",loading:!1,loaded:!1},load:function(t){var e,n=this;if(this[t].loaded)return void setTimeout(function(){n.done(t)});this[t].loading||(this[t].loading=!0,e=document.createElement("script"),e.type="text/javascript",e.src=this[t].src,"youtube"===t?window.onYouTubeIframeAPIReady=function(){n[t].loaded=!0,n.done(t)}:e.onload=function(){n[t].loaded=!0,n.done(t)},document.body.appendChild(e))},done:function(e){var n,o,i;"youtube"===e&&delete window.onYouTubeIframeAPIReady,(n=t.fancybox.getInstance())&&(o=n.current.$content.find("iframe"),"youtube"===e&&void 0!==YT&&YT?i=new YT.Player(o.attr("id"),{events:{onStateChange:function(t){0==t.data&&n.next()}}}):"vimeo"===e&&void 0!==Vimeo&&Vimeo&&(i=new Vimeo.Player(o),i.on("ended",function(){n.next()})))}};t(document).on({"afterShow.fb":function(t,e,n){e.group.length>1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i<n&&(i=n+1-Math.pow(n-f-l,.8)||0),d>0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&a<o&&(a=o+1-Math.pow(o-p-d,.8)||0),{top:a,left:i}},d.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},d.prototype.onZoom=function(){var e=this,a=e.contentStartPos,r=a.width,c=a.height,l=a.left,d=a.top,u=s(e.newPoints[0],e.newPoints[1]),f=u/e.startDistanceBetweenFingers,p=Math.floor(r*f),h=Math.floor(c*f),g=(r-p)*e.percentageOfImageAtPinchPointX,b=(c-h)*e.percentageOfImageAtPinchPointY,m=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),v=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=m-e.centerPointStartX,x=v-e.centerPointStartY,w=l+(g+y),$=d+(b+x),S={top:$,left:w,scaleX:f,scaleY:f};e.canTap=!1,e.newWidth=p,e.newHeight=h,e.contentLastPos=S,e.requestId&&i(e.requestId),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},d.prototype.ontouchend=function(t){var o=this,s=o.isSwiping,r=o.isPanning,c=o.isZooming,l=o.isScrolling;if(o.endPoints=a(t),o.dMs=Math.max((new Date).getTime()-o.startTime,1),o.$container.removeClass("fancybox-is-grabbing"),n(e).off(".fb.touch"),e.removeEventListener("scroll",o.onscroll,!0),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.isScrolling=!1,o.instance.isDragging=!1,o.canTap)return o.onTap(t);o.speed=100,o.velocityX=o.distanceX/o.dMs*.5,o.velocityY=o.distanceY/o.dMs*.5,r?o.endPanning():c?o.endZooming():o.endSwiping(s,l)},d.prototype.endSwiping=function(t,e){var o=this,i=!1,a=o.instance.group.length,s=Math.abs(o.distanceX),r="x"==t&&a>1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg></button>'},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('<div class="fancybox-progress"></div>').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex<o.group.length-1)?n.isActive&&"video"!==i.contentType&&(n.$progress&&e.fancybox.animate(n.$progress.show(),{scaleX:1},i.opts.slideShow.speed),n.timer=setTimeout(function(){o.current.opts.loop||o.current.index!=o.group.length-1?o.next():o.jumpTo(0)},i.opts.slideShow.speed)):(n.stop(),o.idleSecondsCounter=0,o.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null,t.$progress&&t.$progress.removeAttr("style").hide()},start:function(){var t=this,e=t.instance.current;e&&(t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),t.isActive=!0,e.isComplete&&t.set(!0),t.instance.trigger("onSlideShowChange",!0))},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),t.isActive=!1,t.instance.trigger("onSlideShowChange",!1),t.$progress&&t.$progress.removeAttr("style").hide()},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,jQuery),function(t,e){"use strict";var n=function(){for(var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n={},o=0;o<e.length;o++){var i=e[o];if(i&&i[1]in t){for(var a=0;a<i.length;a++)n[e[0][a]]=i[a];return n}}return!1}();if(n){var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e.extend(!0,e.fancybox.defaults,{btnTpl:{fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg></button>'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg></button>'},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i<a&&(n[i].thumb&&o++,!(o>1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('<div class="'+n+" "+n+"-"+o.opts.axis+'"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('<div class="'+n+'__list">').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('<a href="javascript:;" tabindex="0" data-index="'+e+'"'+(t&&t.length?' style="background-image:url('+t+')"':'class="fancybox-thumbs-missing"')+"></a>")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.left<a.scrollLeft()||n.left>a.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg></button>'},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location},
342tpl:'<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p></div>'}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery);
343/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
344
345/***/ }),
346
vendor: 12,503 bytes, lines 347-742
347/***/ "./node_modules/bootstrap/js/src/collapse.js":
348/*!***************************************************!*\
349  !*** ./node_modules/bootstrap/js/src/collapse.js ***!
350  \***************************************************/
351/*! exports provided: default */
352/***/ (function(module, __webpack_exports__, __webpack_require__) {
353
354"use strict";
355__webpack_require__.r(__webpack_exports__);
356/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
357/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
358/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js");
359/**
360 * --------------------------------------------------------------------------
361 * Bootstrap (v4.6.2): collapse.js
362 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
363 * --------------------------------------------------------------------------
364 */
365
366
367
368
369/**
370 * Constants
371 */
372
373const NAME = 'collapse'
374const VERSION = '4.6.2'
375const DATA_KEY = 'bs.collapse'
376const EVENT_KEY = `.${DATA_KEY}`
377const DATA_API_KEY = '.data-api'
378const JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]
379
380const CLASS_NAME_SHOW = 'show'
381const CLASS_NAME_COLLAPSE = 'collapse'
382const CLASS_NAME_COLLAPSING = 'collapsing'
383const CLASS_NAME_COLLAPSED = 'collapsed'
384
385const DIMENSION_WIDTH = 'width'
386const DIMENSION_HEIGHT = 'height'
387
388const EVENT_SHOW = `show${EVENT_KEY}`
389const EVENT_SHOWN = `shown${EVENT_KEY}`
390const EVENT_HIDE = `hide${EVENT_KEY}`
391const EVENT_HIDDEN = `hidden${EVENT_KEY}`
392const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
393
394const SELECTOR_ACTIVES = '.show, .collapsing'
395const SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]'
396
397const Default = {
398  toggle: true,
399  parent: ''
400}
401
402const DefaultType = {
403  toggle: 'boolean',
404  parent: '(string|element)'
405}
406
407/**
408 * Class definition
409 */
410
411class Collapse {
412  constructor(element, config) {
413    this._isTransitioning = false
414    this._element = element
415    this._config = this._getConfig(config)
416    this._triggerArray = [].slice.call(document.querySelectorAll(
417      `[data-toggle="collapse"][href="#${element.id}"],` +
418      `[data-toggle="collapse"][data-target="#${element.id}"]`
419    ))
420
421    const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))
422    for (let i = 0, len = toggleList.length; i < len; i++) {
423      const elem = toggleList[i]
424      const selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(elem)
425      const filterElement = [].slice.call(document.querySelectorAll(selector))
426        .filter(foundElem => foundElem === element)
427
428      if (selector !== null && filterElement.length > 0) {
429        this._selector = selector
430        this._triggerArray.push(elem)
431      }
432    }
433
434    this._parent = this._config.parent ? this._getParent() : null
435
436    if (!this._config.parent) {
437      this._addAriaAndCollapsedClass(this._element, this._triggerArray)
438    }
439
440    if (this._config.toggle) {
441      this.toggle()
442    }
443  }
444
445  // Getters
446  static get VERSION() {
447    return VERSION
448  }
449
450  static get Default() {
451    return Default
452  }
453
454  // Public
455  toggle() {
456    if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) {
457      this.hide()
458    } else {
459      this.show()
460    }
461  }
462
463  show() {
464    if (this._isTransitioning ||
465      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) {
466      return
467    }
468
469    let actives
470    let activesData
471
472    if (this._parent) {
473      actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))
474        .filter(elem => {
475          if (typeof this._config.parent === 'string') {
476            return elem.getAttribute('data-parent') === this._config.parent
477          }
478
479          return elem.classList.contains(CLASS_NAME_COLLAPSE)
480        })
481
482      if (actives.length === 0) {
483        actives = null
484      }
485    }
486
487    if (actives) {
488      activesData = jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector).data(DATA_KEY)
489      if (activesData && activesData._isTransitioning) {
490        return
491      }
492    }
493
494    const startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOW)
495    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent)
496    if (startEvent.isDefaultPrevented()) {
497      return
498    }
499
500    if (actives) {
501      Collapse._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector), 'hide')
502      if (!activesData) {
503        jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).data(DATA_KEY, null)
504      }
505    }
506
507    const dimension = this._getDimension()
508
509    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
510      .removeClass(CLASS_NAME_COLLAPSE)
511      .addClass(CLASS_NAME_COLLAPSING)
512
513    this._element.style[dimension] = 0
514
515    if (this._triggerArray.length) {
516      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._triggerArray)
517        .removeClass(CLASS_NAME_COLLAPSED)
518        .attr('aria-expanded', true)
519    }
520
521    this.setTransitioning(true)
522
523    const complete = () => {
524      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
525        .removeClass(CLASS_NAME_COLLAPSING)
526        .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)
527
528      this._element.style[dimension] = ''
529
530      this.setTransitioning(false)
531
532      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(EVENT_SHOWN)
533    }
534
535    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)
536    const scrollSize = `scroll${capitalizedDimension}`
537    const transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element)
538
539    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
540      .one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete)
541      .emulateTransitionEnd(transitionDuration)
542
543    this._element.style[dimension] = `${this._element[scrollSize]}px`
544  }
545
546  hide() {
547    if (this._isTransitioning ||
548      !jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) {
549      return
550    }
551
552    const startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE)
553    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent)
554    if (startEvent.isDefaultPrevented()) {
555      return
556    }
557
558    const dimension = this._getDimension()
559
560    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`
561
562    _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._element)
563
564    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
565      .addClass(CLASS_NAME_COLLAPSING)
566      .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)
567
568    const triggerArrayLength = this._triggerArray.length
569    if (triggerArrayLength > 0) {
570      for (let i = 0; i < triggerArrayLength; i++) {
571        const trigger = this._triggerArray[i]
572        const selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(trigger)
573
574        if (selector !== null) {
575          const $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()([].slice.call(document.querySelectorAll(selector)))
576          if (!$elem.hasClass(CLASS_NAME_SHOW)) {
577            jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger).addClass(CLASS_NAME_COLLAPSED)
578              .attr('aria-expanded', false)
579          }
580        }
581      }
582    }
583
584    this.setTransitioning(true)
585
586    const complete = () => {
587      this.setTransitioning(false)
588      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
589        .removeClass(CLASS_NAME_COLLAPSING)
590        .addClass(CLASS_NAME_COLLAPSE)
591        .trigger(EVENT_HIDDEN)
592    }
593
594    this._element.style[dimension] = ''
595    const transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element)
596
597    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element)
598      .one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete)
599      .emulateTransitionEnd(transitionDuration)
600  }
601
602  setTransitioning(isTransitioning) {
603    this._isTransitioning = isTransitioning
604  }
605
606  dispose() {
607    jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY)
608
609    this._config = null
610    this._parent = null
611    this._element = null
612    this._triggerArray = null
613    this._isTransitioning = null
614  }
615
616  // Private
617  _getConfig(config) {
618    config = {
619      ...Default,
620      ...config
621    }
622    config.toggle = Boolean(config.toggle) // Coerce string values
623    _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType)
624    return config
625  }
626
627  _getDimension() {
628    const hasWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(DIMENSION_WIDTH)
629    return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT
630  }
631
632  _getParent() {
633    let parent
634
635    if (_util__WEBPACK_IMPORTED_MODULE_1__["default"].isElement(this._config.parent)) {
636      parent = this._config.parent
637
638      // It's a jQuery object
639      if (typeof this._config.parent.jquery !== 'undefined') {
640        parent = this._config.parent[0]
641      }
642    } else {
643      parent = document.querySelector(this._config.parent)
644    }
645
646    const selector = `[data-toggle="collapse"][data-parent="${this._config.parent}"]`
647    const children = [].slice.call(parent.querySelectorAll(selector))
648
649    jquery__WEBPACK_IMPORTED_MODULE_0___default()(children).each((i, element) => {
650      this._addAriaAndCollapsedClass(
651        Collapse._getTargetFromElement(element),
652        [element]
653      )
654    })
655
656    return parent
657  }
658
659  _addAriaAndCollapsedClass(element, triggerArray) {
660    const isOpen = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).hasClass(CLASS_NAME_SHOW)
661
662    if (triggerArray.length) {
663      jquery__WEBPACK_IMPORTED_MODULE_0___default()(triggerArray)
664        .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)
665        .attr('aria-expanded', isOpen)
666    }
667  }
668
669  // Static
670  static _getTargetFromElement(element) {
671    const selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(element)
672    return selector ? document.querySelector(selector) : null
673  }
674
675  static _jQueryInterface(config) {
676    return this.each(function () {
677      const $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)
678      let data = $element.data(DATA_KEY)
679      const _config = {
680        ...Default,
681        ...$element.data(),
682        ...(typeof config === 'object' && config ? config : {})
683      }
684
685      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
686        _config.toggle = false
687      }
688
689      if (!data) {
690        data = new Collapse(this, _config)
691        $element.data(DATA_KEY, data)
692      }
693
694      if (typeof config === 'string') {
695        if (typeof data[config] === 'undefined') {
696          throw new TypeError(`No method named "${config}"`)
697        }
698
699        data[config]()
700      }
701    })
702  }
703}
704
705/**
706 * Data API implementation
707 */
708
709jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
710  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
711  if (event.currentTarget.tagName === 'A') {
712    event.preventDefault()
713  }
714
715  const $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)
716  const selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this)
717  const selectors = [].slice.call(document.querySelectorAll(selector))
718
719  jquery__WEBPACK_IMPORTED_MODULE_0___default()(selectors).each(function () {
720    const $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)
721    const data = $target.data(DATA_KEY)
722    const config = data ? 'toggle' : $trigger.data()
723    Collapse._jQueryInterface.call($target, config)
724  })
725})
726
727/**
728 * jQuery
729 */
730
731jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Collapse._jQueryInterface
732jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Collapse
733jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = () => {
734  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT
735  return Collapse._jQueryInterface
736}
737
738/* harmony default export */ __webpack_exports__["default"] = (Collapse);
739
740
741/***/ }),
742
vendor: 5,212 bytes, lines 743-930
743/***/ "./node_modules/bootstrap/js/src/popover.js":
744/*!**************************************************!*\
745  !*** ./node_modules/bootstrap/js/src/popover.js ***!
746  \**************************************************/
747/*! exports provided: default */
748/***/ (function(module, __webpack_exports__, __webpack_require__) {
749
750"use strict";
751__webpack_require__.r(__webpack_exports__);
752/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
753/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
754/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip */ "./node_modules/bootstrap/js/src/tooltip.js");
755/**
756 * --------------------------------------------------------------------------
757 * Bootstrap (v4.6.2): popover.js
758 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
759 * --------------------------------------------------------------------------
760 */
761
762
763
764
765/**
766 * Constants
767 */
768
769const NAME = 'popover'
770const VERSION = '4.6.2'
771const DATA_KEY = 'bs.popover'
772const EVENT_KEY = `.${DATA_KEY}`
773const JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]
774const CLASS_PREFIX = 'bs-popover'
775const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g')
776
777const CLASS_NAME_FADE = 'fade'
778const CLASS_NAME_SHOW = 'show'
779
780const SELECTOR_TITLE = '.popover-header'
781const SELECTOR_CONTENT = '.popover-body'
782
783const Default = {
784  ..._tooltip__WEBPACK_IMPORTED_MODULE_1__["default"].Default,
785  placement: 'right',
786  trigger: 'click',
787  content: '',
788  template: '<div class="popover" role="tooltip">' +
789              '<div class="arrow"></div>' +
790              '<h3 class="popover-header"></h3>' +
791              '<div class="popover-body"></div></div>'
792}
793
794const DefaultType = {
795  ..._tooltip__WEBPACK_IMPORTED_MODULE_1__["default"].DefaultType,
796  content: '(string|element|function)'
797}
798
799const Event = {
800  HIDE: `hide${EVENT_KEY}`,
801  HIDDEN: `hidden${EVENT_KEY}`,
802  SHOW: `show${EVENT_KEY}`,
803  SHOWN: `shown${EVENT_KEY}`,
804  INSERTED: `inserted${EVENT_KEY}`,
805  CLICK: `click${EVENT_KEY}`,
806  FOCUSIN: `focusin${EVENT_KEY}`,
807  FOCUSOUT: `focusout${EVENT_KEY}`,
808  MOUSEENTER: `mouseenter${EVENT_KEY}`,
809  MOUSELEAVE: `mouseleave${EVENT_KEY}`
810}
811
812/**
813 * Class definition
814 */
815
816class Popover extends _tooltip__WEBPACK_IMPORTED_MODULE_1__["default"] {
817  // Getters
818  static get VERSION() {
819    return VERSION
820  }
821
822  static get Default() {
823    return Default
824  }
825
826  static get NAME() {
827    return NAME
828  }
829
830  static get DATA_KEY() {
831    return DATA_KEY
832  }
833
834  static get Event() {
835    return Event
836  }
837
838  static get EVENT_KEY() {
839    return EVENT_KEY
840  }
841
842  static get DefaultType() {
843    return DefaultType
844  }
845
846  // Overrides
847  isWithContent() {
848    return this.getTitle() || this._getContent()
849  }
850
851  addAttachmentClass(attachment) {
852    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)
853  }
854
855  getTipElement() {
856    this.tip = this.tip || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.config.template)[0]
857    return this.tip
858  }
859
860  setContent() {
861    const $tip = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement())
862
863    // We use append for html objects to maintain js events
864    this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())
865    let content = this._getContent()
866    if (typeof content === 'function') {
867      content = content.call(this.element)
868    }
869
870    this.setElementContent($tip.find(SELECTOR_CONTENT), content)
871
872    $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)
873  }
874
875  // Private
876  _getContent() {
877    return this.element.getAttribute('data-content') ||
878      this.config.content
879  }
880
881  _cleanTipClass() {
882    const $tip = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement())
883    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)
884    if (tabClass !== null && tabClass.length > 0) {
885      $tip.removeClass(tabClass.join(''))
886    }
887  }
888
889  // Static
890  static _jQueryInterface(config) {
891    return this.each(function () {
892      let data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY)
893      const _config = typeof config === 'object' ? config : null
894
895      if (!data && /dispose|hide/.test(config)) {
896        return
897      }
898
899      if (!data) {
900        data = new Popover(this, _config)
901        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data)
902      }
903
904      if (typeof config === 'string') {
905        if (typeof data[config] === 'undefined') {
906          throw new TypeError(`No method named "${config}"`)
907        }
908
909        data[config]()
910      }
911    })
912  }
913}
914
915/**
916 * jQuery
917 */
918
919jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Popover._jQueryInterface
920jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Popover
921jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = () => {
922  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT
923  return Popover._jQueryInterface
924}
925
926/* harmony default export */ __webpack_exports__["default"] = (Popover);
927
928
929/***/ }),
930
vendor: 4,117 bytes, lines 931-1073
931/***/ "./node_modules/bootstrap/js/src/tools/sanitizer.js":
932/*!**********************************************************!*\
933  !*** ./node_modules/bootstrap/js/src/tools/sanitizer.js ***!
934  \**********************************************************/
935/*! exports provided: DefaultWhitelist, sanitizeHtml */
936/***/ (function(module, __webpack_exports__, __webpack_require__) {
937
938"use strict";
939__webpack_require__.r(__webpack_exports__);
940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultWhitelist", function() { return DefaultWhitelist; });
941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitizeHtml", function() { return sanitizeHtml; });
942/**
943 * --------------------------------------------------------------------------
944 * Bootstrap (v4.6.2): tools/sanitizer.js
945 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
946 * --------------------------------------------------------------------------
947 */
948
949const uriAttrs = [
950  'background',
951  'cite',
952  'href',
953  'itemtype',
954  'longdesc',
955  'poster',
956  'src',
957  'xlink:href'
958]
959
960const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
961
962const DefaultWhitelist = {
963  // Global attributes allowed on any supplied element below.
964  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
965  a: ['target', 'href', 'title', 'rel'],
966  area: [],
967  b: [],
968  br: [],
969  col: [],
970  code: [],
971  div: [],
972  em: [],
973  hr: [],
974  h1: [],
975  h2: [],
976  h3: [],
977  h4: [],
978  h5: [],
979  h6: [],
980  i: [],
981  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
982  li: [],
983  ol: [],
984  p: [],
985  pre: [],
986  s: [],
987  small: [],
988  span: [],
989  sub: [],
990  sup: [],
991  strong: [],
992  u: [],
993  ul: []
994}
995
996/**
997 * A pattern that recognizes a commonly useful subset of URLs that are safe.
998 *
999 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
1000 */
1001const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i
1002
1003/**
1004 * A pattern that matches safe data URLs. Only matches image, video and audio types.
1005 *
1006 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
1007 */
1008const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i
1009
1010function allowedAttribute(attr, allowedAttributeList) {
1011  const attrName = attr.nodeName.toLowerCase()
1012
1013  if (allowedAttributeList.indexOf(attrName) !== -1) {
1014    if (uriAttrs.indexOf(attrName) !== -1) {
1015      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))
1016    }
1017
1018    return true
1019  }
1020
1021  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)
1022
1023  // Check if a regular expression validates the attribute.
1024  for (let i = 0, len = regExp.length; i < len; i++) {
1025    if (regExp[i].test(attrName)) {
1026      return true
1027    }
1028  }
1029
1030  return false
1031}
1032
1033function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
1034  if (unsafeHtml.length === 0) {
1035    return unsafeHtml
1036  }
1037
1038  if (sanitizeFn && typeof sanitizeFn === 'function') {
1039    return sanitizeFn(unsafeHtml)
1040  }
1041
1042  const domParser = new window.DOMParser()
1043  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')
1044  const whitelistKeys = Object.keys(whiteList)
1045  const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))
1046
1047  for (let i = 0, len = elements.length; i < len; i++) {
1048    const el = elements[i]
1049    const elName = el.nodeName.toLowerCase()
1050
1051    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
1052      el.parentNode.removeChild(el)
1053
1054      continue
1055    }
1056
1057    const attributeList = [].slice.call(el.attributes)
1058    // eslint-disable-next-line unicorn/prefer-spread
1059    const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
1060
1061    attributeList.forEach(attr => {
1062      if (!allowedAttribute(attr, whitelistedAttributes)) {
1063        el.removeAttribute(attr.nodeName)
1064      }
1065    })
1066  }
1067
1068  return createdDocument.body.innerHTML
1069}
1070
1071
1072/***/ }),
1073
vendor: 22,288 bytes, lines 1074-1855
1074/***/ "./node_modules/bootstrap/js/src/tooltip.js":
1075/*!**************************************************!*\
1076  !*** ./node_modules/bootstrap/js/src/tooltip.js ***!
1077  \**************************************************/
1078/*! exports provided: default */
1079/***/ (function(module, __webpack_exports__, __webpack_require__) {
1080
1081"use strict";
1082__webpack_require__.r(__webpack_exports__);
1083/* harmony import */ var _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tools/sanitizer */ "./node_modules/bootstrap/js/src/tools/sanitizer.js");
1084/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "jquery");
1085/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);
1086/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js");
1087/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js");
1088/**
1089 * --------------------------------------------------------------------------
1090 * Bootstrap (v4.6.2): tooltip.js
1091 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1092 * --------------------------------------------------------------------------
1093 */
1094
1095
1096
1097
1098
1099
1100/**
1101 * Constants
1102 */
1103
1104const NAME = 'tooltip'
1105const VERSION = '4.6.2'
1106const DATA_KEY = 'bs.tooltip'
1107const EVENT_KEY = `.${DATA_KEY}`
1108const JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME]
1109const CLASS_PREFIX = 'bs-tooltip'
1110const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g')
1111const DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
1112
1113const CLASS_NAME_FADE = 'fade'
1114const CLASS_NAME_SHOW = 'show'
1115
1116const HOVER_STATE_SHOW = 'show'
1117const HOVER_STATE_OUT = 'out'
1118
1119const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'
1120const SELECTOR_ARROW = '.arrow'
1121
1122const TRIGGER_HOVER = 'hover'
1123const TRIGGER_FOCUS = 'focus'
1124const TRIGGER_CLICK = 'click'
1125const TRIGGER_MANUAL = 'manual'
1126
1127const AttachmentMap = {
1128  AUTO: 'auto',
1129  TOP: 'top',
1130  RIGHT: 'right',
1131  BOTTOM: 'bottom',
1132  LEFT: 'left'
1133}
1134
1135const Default = {
1136  animation: true,
1137  template: '<div class="tooltip" role="tooltip">' +
1138                    '<div class="arrow"></div>' +
1139                    '<div class="tooltip-inner"></div></div>',
1140  trigger: 'hover focus',
1141  title: '',
1142  delay: 0,
1143  html: false,
1144  selector: false,
1145  placement: 'top',
1146  offset: 0,
1147  container: false,
1148  fallbackPlacement: 'flip',
1149  boundary: 'scrollParent',
1150  customClass: '',
1151  sanitize: true,
1152  sanitizeFn: null,
1153  whiteList: _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["DefaultWhitelist"],
1154  popperConfig: null
1155}
1156
1157const DefaultType = {
1158  animation: 'boolean',
1159  template: 'string',
1160  title: '(string|element|function)',
1161  trigger: 'string',
1162  delay: '(number|object)',
1163  html: 'boolean',
1164  selector: '(string|boolean)',
1165  placement: '(string|function)',
1166  offset: '(number|string|function)',
1167  container: '(string|element|boolean)',
1168  fallbackPlacement: '(string|array)',
1169  boundary: '(string|element)',
1170  customClass: '(string|function)',
1171  sanitize: 'boolean',
1172  sanitizeFn: '(null|function)',
1173  whiteList: 'object',
1174  popperConfig: '(null|object)'
1175}
1176
1177const Event = {
1178  HIDE: `hide${EVENT_KEY}`,
1179  HIDDEN: `hidden${EVENT_KEY}`,
1180  SHOW: `show${EVENT_KEY}`,
1181  SHOWN: `shown${EVENT_KEY}`,
1182  INSERTED: `inserted${EVENT_KEY}`,
1183  CLICK: `click${EVENT_KEY}`,
1184  FOCUSIN: `focusin${EVENT_KEY}`,
1185  FOCUSOUT: `focusout${EVENT_KEY}`,
1186  MOUSEENTER: `mouseenter${EVENT_KEY}`,
1187  MOUSELEAVE: `mouseleave${EVENT_KEY}`
1188}
1189
1190/**
1191 * Class definition
1192 */
1193
1194class Tooltip {
1195  constructor(element, config) {
1196    if (typeof popper_js__WEBPACK_IMPORTED_MODULE_2__["default"] === 'undefined') {
1197      throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)')
1198    }
1199
1200    // Private
1201    this._isEnabled = true
1202    this._timeout = 0
1203    this._hoverState = ''
1204    this._activeTrigger = {}
1205    this._popper = null
1206
1207    // Protected
1208    this.element = element
1209    this.config = this._getConfig(config)
1210    this.tip = null
1211
1212    this._setListeners()
1213  }
1214
1215  // Getters
1216  static get VERSION() {
1217    return VERSION
1218  }
1219
1220  static get Default() {
1221    return Default
1222  }
1223
1224  static get NAME() {
1225    return NAME
1226  }
1227
1228  static get DATA_KEY() {
1229    return DATA_KEY
1230  }
1231
1232  static get Event() {
1233    return Event
1234  }
1235
1236  static get EVENT_KEY() {
1237    return EVENT_KEY
1238  }
1239
1240  static get DefaultType() {
1241    return DefaultType
1242  }
1243
1244  // Public
1245  enable() {
1246    this._isEnabled = true
1247  }
1248
1249  disable() {
1250    this._isEnabled = false
1251  }
1252
1253  toggleEnabled() {
1254    this._isEnabled = !this._isEnabled
1255  }
1256
1257  toggle(event) {
1258    if (!this._isEnabled) {
1259      return
1260    }
1261
1262    if (event) {
1263      const dataKey = this.constructor.DATA_KEY
1264      let context = jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey)
1265
1266      if (!context) {
1267        context = new this.constructor(
1268          event.currentTarget,
1269          this._getDelegateConfig()
1270        )
1271        jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context)
1272      }
1273
1274      context._activeTrigger.click = !context._activeTrigger.click
1275
1276      if (context._isWithActiveTrigger()) {
1277        context._enter(null, context)
1278      } else {
1279        context._leave(null, context)
1280      }
1281    } else {
1282      if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {
1283        this._leave(null, this)
1284        return
1285      }
1286
1287      this._enter(null, this)
1288    }
1289  }
1290
1291  dispose() {
1292    clearTimeout(this._timeout)
1293
1294    jquery__WEBPACK_IMPORTED_MODULE_1___default.a.removeData(this.element, this.constructor.DATA_KEY)
1295
1296    jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).off(this.constructor.EVENT_KEY)
1297    jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)
1298
1299    if (this.tip) {
1300      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).remove()
1301    }
1302
1303    this._isEnabled = null
1304    this._timeout = null
1305    this._hoverState = null
1306    this._activeTrigger = null
1307    if (this._popper) {
1308      this._popper.destroy()
1309    }
1310
1311    this._popper = null
1312    this.element = null
1313    this.config = null
1314    this.tip = null
1315  }
1316
1317  show() {
1318    if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).css('display') === 'none') {
1319      throw new Error('Please use show on visible elements')
1320    }
1321
1322    const showEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.SHOW)
1323    if (this.isWithContent() && this._isEnabled) {
1324      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(showEvent)
1325
1326      const shadowRoot = _util__WEBPACK_IMPORTED_MODULE_3__["default"].findShadowRoot(this.element)
1327      const isInTheDom = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(
1328        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,
1329        this.element
1330      )
1331
1332      if (showEvent.isDefaultPrevented() || !isInTheDom) {
1333        return
1334      }
1335
1336      const tip = this.getTipElement()
1337      const tipId = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getUID(this.constructor.NAME)
1338
1339      tip.setAttribute('id', tipId)
1340      this.element.setAttribute('aria-describedby', tipId)
1341
1342      this.setContent()
1343
1344      if (this.config.animation) {
1345        jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(CLASS_NAME_FADE)
1346      }
1347
1348      const placement = typeof this.config.placement === 'function' ?
1349        this.config.placement.call(this, tip, this.element) :
1350        this.config.placement
1351
1352      const attachment = this._getAttachment(placement)
1353      this.addAttachmentClass(attachment)
1354
1355      const container = this._getContainer()
1356      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).data(this.constructor.DATA_KEY, this)
1357
1358      if (!jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(this.element.ownerDocument.documentElement, this.tip)) {
1359        jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).appendTo(container)
1360      }
1361
1362      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(this.constructor.Event.INSERTED)
1363
1364      this._popper = new popper_js__WEBPACK_IMPORTED_MODULE_2__["default"](this.element, tip, this._getPopperConfig(attachment))
1365
1366      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(CLASS_NAME_SHOW)
1367      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(this.config.customClass)
1368
1369      // If this is a touch-enabled device we add extra
1370      // empty mouseover listeners to the body's immediate children;
1371      // only needed because of broken event delegation on iOS
1372      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1373      if ('ontouchstart' in document.documentElement) {
1374        jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().on('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop)
1375      }
1376
1377      const complete = () => {
1378        if (this.config.animation) {
1379          this._fixTransition()
1380        }
1381
1382        const prevHoverState = this._hoverState
1383        this._hoverState = null
1384
1385        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(this.constructor.Event.SHOWN)
1386
1387        if (prevHoverState === HOVER_STATE_OUT) {
1388          this._leave(null, this)
1389        }
1390      }
1391
1392      if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(CLASS_NAME_FADE)) {
1393        const transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(this.tip)
1394
1395        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip)
1396          .one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete)
1397          .emulateTransitionEnd(transitionDuration)
1398      } else {
1399        complete()
1400      }
1401    }
1402  }
1403
1404  hide(callback) {
1405    const tip = this.getTipElement()
1406    const hideEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.HIDE)
1407    const complete = () => {
1408      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
1409        tip.parentNode.removeChild(tip)
1410      }
1411
1412      this._cleanTipClass()
1413      this.element.removeAttribute('aria-describedby')
1414      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(this.constructor.Event.HIDDEN)
1415      if (this._popper !== null) {
1416        this._popper.destroy()
1417      }
1418
1419      if (callback) {
1420        callback()
1421      }
1422    }
1423
1424    jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(hideEvent)
1425
1426    if (hideEvent.isDefaultPrevented()) {
1427      return
1428    }
1429
1430    jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(CLASS_NAME_SHOW)
1431
1432    // If this is a touch-enabled device we remove the extra
1433    // empty mouseover listeners we added for iOS support
1434    if ('ontouchstart' in document.documentElement) {
1435      jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().off('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop)
1436    }
1437
1438    this._activeTrigger[TRIGGER_CLICK] = false
1439    this._activeTrigger[TRIGGER_FOCUS] = false
1440    this._activeTrigger[TRIGGER_HOVER] = false
1441
1442    if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(CLASS_NAME_FADE)) {
1443      const transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(tip)
1444
1445      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip)
1446        .one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete)
1447        .emulateTransitionEnd(transitionDuration)
1448    } else {
1449      complete()
1450    }
1451
1452    this._hoverState = ''
1453  }
1454
1455  update() {
1456    if (this._popper !== null) {
1457      this._popper.scheduleUpdate()
1458    }
1459  }
1460
1461  // Protected
1462  isWithContent() {
1463    return Boolean(this.getTitle())
1464  }
1465
1466  addAttachmentClass(attachment) {
1467    jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)
1468  }
1469
1470  getTipElement() {
1471    this.tip = this.tip || jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.template)[0]
1472    return this.tip
1473  }
1474
1475  setContent() {
1476    const tip = this.getTipElement()
1477    this.setElementContent(jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())
1478    jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)
1479  }
1480
1481  setElementContent($element, content) {
1482    if (typeof content === 'object' && (content.nodeType || content.jquery)) {
1483      // Content is a DOM node or a jQuery
1484      if (this.config.html) {
1485        if (!jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).parent().is($element)) {
1486          $element.empty().append(content)
1487        }
1488      } else {
1489        $element.text(jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).text())
1490      }
1491
1492      return
1493    }
1494
1495    if (this.config.html) {
1496      if (this.config.sanitize) {
1497        content = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(content, this.config.whiteList, this.config.sanitizeFn)
1498      }
1499
1500      $element.html(content)
1501    } else {
1502      $element.text(content)
1503    }
1504  }
1505
1506  getTitle() {
1507    let title = this.element.getAttribute('data-original-title')
1508
1509    if (!title) {
1510      title = typeof this.config.title === 'function' ?
1511        this.config.title.call(this.element) :
1512        this.config.title
1513    }
1514
1515    return title
1516  }
1517
1518  // Private
1519  _getPopperConfig(attachment) {
1520    const defaultBsConfig = {
1521      placement: attachment,
1522      modifiers: {
1523        offset: this._getOffset(),
1524        flip: {
1525          behavior: this.config.fallbackPlacement
1526        },
1527        arrow: {
1528          element: SELECTOR_ARROW
1529        },
1530        preventOverflow: {
1531          boundariesElement: this.config.boundary
1532        }
1533      },
1534      onCreate: data => {
1535        if (data.originalPlacement !== data.placement) {
1536          this._handlePopperPlacementChange(data)
1537        }
1538      },
1539      onUpdate: data => this._handlePopperPlacementChange(data)
1540    }
1541
1542    return {
1543      ...defaultBsConfig,
1544      ...this.config.popperConfig
1545    }
1546  }
1547
1548  _getOffset() {
1549    const offset = {}
1550
1551    if (typeof this.config.offset === 'function') {
1552      offset.fn = data => {
1553        data.offsets = {
1554          ...data.offsets,
1555          ...this.config.offset(data.offsets, this.element)
1556        }
1557
1558        return data
1559      }
1560    } else {
1561      offset.offset = this.config.offset
1562    }
1563
1564    return offset
1565  }
1566
1567  _getContainer() {
1568    if (this.config.container === false) {
1569      return document.body
1570    }
1571
1572    if (_util__WEBPACK_IMPORTED_MODULE_3__["default"].isElement(this.config.container)) {
1573      return jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.container)
1574    }
1575
1576    return jquery__WEBPACK_IMPORTED_MODULE_1___default()(document).find(this.config.container)
1577  }
1578
1579  _getAttachment(placement) {
1580    return AttachmentMap[placement.toUpperCase()]
1581  }
1582
1583  _setListeners() {
1584    const triggers = this.config.trigger.split(' ')
1585
1586    triggers.forEach(trigger => {
1587      if (trigger === 'click') {
1588        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).on(
1589          this.constructor.Event.CLICK,
1590          this.config.selector,
1591          event => this.toggle(event)
1592        )
1593      } else if (trigger !== TRIGGER_MANUAL) {
1594        const eventIn = trigger === TRIGGER_HOVER ?
1595          this.constructor.Event.MOUSEENTER :
1596          this.constructor.Event.FOCUSIN
1597        const eventOut = trigger === TRIGGER_HOVER ?
1598          this.constructor.Event.MOUSELEAVE :
1599          this.constructor.Event.FOCUSOUT
1600
1601        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element)
1602          .on(eventIn, this.config.selector, event => this._enter(event))
1603          .on(eventOut, this.config.selector, event => this._leave(event))
1604      }
1605    })
1606
1607    this._hideModalHandler = () => {
1608      if (this.element) {
1609        this.hide()
1610      }
1611    }
1612
1613    jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)
1614
1615    if (this.config.selector) {
1616      this.config = {
1617        ...this.config,
1618        trigger: 'manual',
1619        selector: ''
1620      }
1621    } else {
1622      this._fixTitle()
1623    }
1624  }
1625
1626  _fixTitle() {
1627    const titleType = typeof this.element.getAttribute('data-original-title')
1628
1629    if (this.element.getAttribute('title') || titleType !== 'string') {
1630      this.element.setAttribute(
1631        'data-original-title',
1632        this.element.getAttribute('title') || ''
1633      )
1634
1635      this.element.setAttribute('title', '')
1636    }
1637  }
1638
1639  _enter(event, context) {
1640    const dataKey = this.constructor.DATA_KEY
1641    context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey)
1642
1643    if (!context) {
1644      context = new this.constructor(
1645        event.currentTarget,
1646        this._getDelegateConfig()
1647      )
1648      jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context)
1649    }
1650
1651    if (event) {
1652      context._activeTrigger[
1653        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER
1654      ] = true
1655    }
1656
1657    if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {
1658      context._hoverState = HOVER_STATE_SHOW
1659      return
1660    }
1661
1662    clearTimeout(context._timeout)
1663
1664    context._hoverState = HOVER_STATE_SHOW
1665
1666    if (!context.config.delay || !context.config.delay.show) {
1667      context.show()
1668      return
1669    }
1670
1671    context._timeout = setTimeout(() => {
1672      if (context._hoverState === HOVER_STATE_SHOW) {
1673        context.show()
1674      }
1675    }, context.config.delay.show)
1676  }
1677
1678  _leave(event, context) {
1679    const dataKey = this.constructor.DATA_KEY
1680    context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey)
1681
1682    if (!context) {
1683      context = new this.constructor(
1684        event.currentTarget,
1685        this._getDelegateConfig()
1686      )
1687      jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context)
1688    }
1689
1690    if (event) {
1691      context._activeTrigger[
1692        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER
1693      ] = false
1694    }
1695
1696    if (context._isWithActiveTrigger()) {
1697      return
1698    }
1699
1700    clearTimeout(context._timeout)
1701
1702    context._hoverState = HOVER_STATE_OUT
1703
1704    if (!context.config.delay || !context.config.delay.hide) {
1705      context.hide()
1706      return
1707    }
1708
1709    context._timeout = setTimeout(() => {
1710      if (context._hoverState === HOVER_STATE_OUT) {
1711        context.hide()
1712      }
1713    }, context.config.delay.hide)
1714  }
1715
1716  _isWithActiveTrigger() {
1717    for (const trigger in this._activeTrigger) {
1718      if (this._activeTrigger[trigger]) {
1719        return true
1720      }
1721    }
1722
1723    return false
1724  }
1725
1726  _getConfig(config) {
1727    const dataAttributes = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).data()
1728
1729    Object.keys(dataAttributes)
1730      .forEach(dataAttr => {
1731        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
1732          delete dataAttributes[dataAttr]
1733        }
1734      })
1735
1736    config = {
1737      ...this.constructor.Default,
1738      ...dataAttributes,
1739      ...(typeof config === 'object' && config ? config : {})
1740    }
1741
1742    if (typeof config.delay === 'number') {
1743      config.delay = {
1744        show: config.delay,
1745        hide: config.delay
1746      }
1747    }
1748
1749    if (typeof config.title === 'number') {
1750      config.title = config.title.toString()
1751    }
1752
1753    if (typeof config.content === 'number') {
1754      config.content = config.content.toString()
1755    }
1756
1757    _util__WEBPACK_IMPORTED_MODULE_3__["default"].typeCheckConfig(
1758      NAME,
1759      config,
1760      this.constructor.DefaultType
1761    )
1762
1763    if (config.sanitize) {
1764      config.template = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(config.template, config.whiteList, config.sanitizeFn)
1765    }
1766
1767    return config
1768  }
1769
1770  _getDelegateConfig() {
1771    const config = {}
1772
1773    if (this.config) {
1774      for (const key in this.config) {
1775        if (this.constructor.Default[key] !== this.config[key]) {
1776          config[key] = this.config[key]
1777        }
1778      }
1779    }
1780
1781    return config
1782  }
1783
1784  _cleanTipClass() {
1785    const $tip = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement())
1786    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)
1787    if (tabClass !== null && tabClass.length) {
1788      $tip.removeClass(tabClass.join(''))
1789    }
1790  }
1791
1792  _handlePopperPlacementChange(popperData) {
1793    this.tip = popperData.instance.popper
1794    this._cleanTipClass()
1795    this.addAttachmentClass(this._getAttachment(popperData.placement))
1796  }
1797
1798  _fixTransition() {
1799    const tip = this.getTipElement()
1800    const initConfigAnimation = this.config.animation
1801
1802    if (tip.getAttribute('x-placement') !== null) {
1803      return
1804    }
1805
1806    jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(CLASS_NAME_FADE)
1807    this.config.animation = false
1808    this.hide()
1809    this.show()
1810    this.config.animation = initConfigAnimation
1811  }
1812
1813  // Static
1814  static _jQueryInterface(config) {
1815    return this.each(function () {
1816      const $element = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this)
1817      let data = $element.data(DATA_KEY)
1818      const _config = typeof config === 'object' && config
1819
1820      if (!data && /dispose|hide/.test(config)) {
1821        return
1822      }
1823
1824      if (!data) {
1825        data = new Tooltip(this, _config)
1826        $element.data(DATA_KEY, data)
1827      }
1828
1829      if (typeof config === 'string') {
1830        if (typeof data[config] === 'undefined') {
1831          throw new TypeError(`No method named "${config}"`)
1832        }
1833
1834        data[config]()
1835      }
1836    })
1837  }
1838}
1839
1840/**
1841 * jQuery
1842 */
1843
1844jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = Tooltip._jQueryInterface
1845jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].Constructor = Tooltip
1846jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].noConflict = () => {
1847  jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = JQUERY_NO_CONFLICT
1848  return Tooltip._jQueryInterface
1849}
1850
1851/* harmony default export */ __webpack_exports__["default"] = (Tooltip);
1852
1853
1854/***/ }),
1855
vendor: 6,127 bytes, lines 1856-2065
1856/***/ "./node_modules/bootstrap/js/src/util.js":
1857/*!***********************************************!*\
1858  !*** ./node_modules/bootstrap/js/src/util.js ***!
1859  \***********************************************/
1860/*! exports provided: default */
1861/***/ (function(module, __webpack_exports__, __webpack_require__) {
1862
1863"use strict";
1864__webpack_require__.r(__webpack_exports__);
1865/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
1866/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
1867/**
1868 * --------------------------------------------------------------------------
1869 * Bootstrap (v4.6.2): util.js
1870 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1871 * --------------------------------------------------------------------------
1872 */
1873
1874
1875
1876/**
1877 * Private TransitionEnd Helpers
1878 */
1879
1880const TRANSITION_END = 'transitionend'
1881const MAX_UID = 1000000
1882const MILLISECONDS_MULTIPLIER = 1000
1883
1884// Shoutout AngusCroll (https://goo.gl/pxwQGp)
1885function toType(obj) {
1886  if (obj === null || typeof obj === 'undefined') {
1887    return `${obj}`
1888  }
1889
1890  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase()
1891}
1892
1893function getSpecialTransitionEndEvent() {
1894  return {
1895    bindType: TRANSITION_END,
1896    delegateType: TRANSITION_END,
1897    handle(event) {
1898      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is(this)) {
1899        return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params
1900      }
1901
1902      return undefined
1903    }
1904  }
1905}
1906
1907function transitionEndEmulator(duration) {
1908  let called = false
1909
1910  jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Util.TRANSITION_END, () => {
1911    called = true
1912  })
1913
1914  setTimeout(() => {
1915    if (!called) {
1916      Util.triggerTransitionEnd(this)
1917    }
1918  }, duration)
1919
1920  return this
1921}
1922
1923function setTransitionEndSupport() {
1924  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.emulateTransitionEnd = transitionEndEmulator
1925  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()
1926}
1927
1928/**
1929 * Public Util API
1930 */
1931
1932const Util = {
1933  TRANSITION_END: 'bsTransitionEnd',
1934
1935  getUID(prefix) {
1936    do {
1937      // eslint-disable-next-line no-bitwise
1938      prefix += ~~(Math.random() * MAX_UID) // "~~" acts like a faster Math.floor() here
1939    } while (document.getElementById(prefix))
1940
1941    return prefix
1942  },
1943
1944  getSelectorFromElement(element) {
1945    let selector = element.getAttribute('data-target')
1946
1947    if (!selector || selector === '#') {
1948      const hrefAttr = element.getAttribute('href')
1949      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''
1950    }
1951
1952    try {
1953      return document.querySelector(selector) ? selector : null
1954    } catch (_) {
1955      return null
1956    }
1957  },
1958
1959  getTransitionDurationFromElement(element) {
1960    if (!element) {
1961      return 0
1962    }
1963
1964    // Get transition-duration of the element
1965    let transitionDuration = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-duration')
1966    let transitionDelay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-delay')
1967
1968    const floatTransitionDuration = parseFloat(transitionDuration)
1969    const floatTransitionDelay = parseFloat(transitionDelay)
1970
1971    // Return 0 if element or transition duration is not found
1972    if (!floatTransitionDuration && !floatTransitionDelay) {
1973      return 0
1974    }
1975
1976    // If multiple durations are defined, take the first
1977    transitionDuration = transitionDuration.split(',')[0]
1978    transitionDelay = transitionDelay.split(',')[0]
1979
1980    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER
1981  },
1982
1983  reflow(element) {
1984    return element.offsetHeight
1985  },
1986
1987  triggerTransitionEnd(element) {
1988    jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).trigger(TRANSITION_END)
1989  },
1990
1991  supportsTransitionEnd() {
1992    return Boolean(TRANSITION_END)
1993  },
1994
1995  isElement(obj) {
1996    return (obj[0] || obj).nodeType
1997  },
1998
1999  typeCheckConfig(componentName, config, configTypes) {
2000    for (const property in configTypes) {
2001      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
2002        const expectedTypes = configTypes[property]
2003        const value = config[property]
2004        const valueType = value && Util.isElement(value) ?
2005          'element' : toType(value)
2006
2007        if (!new RegExp(expectedTypes).test(valueType)) {
2008          throw new Error(
2009            `${componentName.toUpperCase()}: ` +
2010            `Option "${property}" provided type "${valueType}" ` +
2011            `but expected type "${expectedTypes}".`)
2012        }
2013      }
2014    }
2015  },
2016
2017  findShadowRoot(element) {
2018    if (!document.documentElement.attachShadow) {
2019      return null
2020    }
2021
2022    // Can find the shadow root otherwise it'll return the document
2023    if (typeof element.getRootNode === 'function') {
2024      const root = element.getRootNode()
2025      return root instanceof ShadowRoot ? root : null
2026    }
2027
2028    if (element instanceof ShadowRoot) {
2029      return element
2030    }
2031
2032    // when we don't find a shadow root
2033    if (!element.parentNode) {
2034      return null
2035    }
2036
2037    return Util.findShadowRoot(element.parentNode)
2038  },
2039
2040  jQueryDetection() {
2041    if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default.a === 'undefined') {
2042      throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.')
2043    }
2044
2045    const version = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.jquery.split(' ')[0].split('.')
2046    const minMajor = 1
2047    const ltMajor = 2
2048    const minMinor = 9
2049    const minPatch = 1
2050    const maxMajor = 4
2051
2052    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
2053      throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
2054    }
2055  }
2056}
2057
2058Util.jQueryDetection()
2059setTransitionEndSupport()
2060
2061/* harmony default export */ __webpack_exports__["default"] = (Util);
2062
2063
2064/***/ }),
2065
vendor: 51,199 bytes, lines 2066-3514
2066/***/ "./node_modules/dom7/dist/dom7.modular.js":
2067/*!************************************************!*\
2068  !*** ./node_modules/dom7/dist/dom7.modular.js ***!
2069  \************************************************/
2070/*! exports provided: $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll */
2071/***/ (function(module, __webpack_exports__, __webpack_require__) {
2072
2073"use strict";
2074__webpack_require__.r(__webpack_exports__);
2075/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$", function() { return $; });
2076/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
2077/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeClass", function() { return removeClass; });
2078/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasClass", function() { return hasClass; });
2079/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toggleClass", function() { return toggleClass; });
2080/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attr", function() { return attr; });
2081/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAttr", function() { return removeAttr; });
2082/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return prop; });
2083/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "data", function() { return data; });
2084/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeData", function() { return removeData; });
2085/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dataset", function() { return dataset; });
2086/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "val", function() { return val; });
2087/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transform", function() { return transform; });
2088/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return transition; });
2089/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "on", function() { return on; });
2090/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "off", function() { return off; });
2091/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return once; });
2092/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return trigger; });
2093/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionEnd", function() { return transitionEnd; });
2094/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationEnd", function() { return animationEnd; });
2095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; });
2096/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerWidth", function() { return outerWidth; });
2097/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; });
2098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerHeight", function() { return outerHeight; });
2099/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return offset; });
2100/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return hide; });
2101/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "show", function() { return show; });
2102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styles", function() { return styles; });
2103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
2104/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; });
2105/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return each; });
2106/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach; });
2107/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; });
2108/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; });
2109/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "html", function() { return html; });
2110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "text", function() { return text; });
2111/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "is", function() { return is; });
2112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return indexOf; });
2113/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "index", function() { return index; });
2114/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eq", function() { return eq; });
2115/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "append", function() { return append; });
2116/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendTo", function() { return appendTo; });
2117/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return prepend; });
2118/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependTo", function() { return prependTo; });
2119/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertBefore", function() { return insertBefore; });
2120/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertAfter", function() { return insertAfter; });
2121/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "next", function() { return next; });
2122/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextAll", function() { return nextAll; });
2123/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prev", function() { return prev; });
2124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prevAll", function() { return prevAll; });
2125/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "siblings", function() { return siblings; });
2126/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parent", function() { return parent; });
2127/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parents", function() { return parents; });
2128/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; });
2129/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; });
2130/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "children", function() { return children; });
2131/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return remove; });
2132/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detach", function() { return detach; });
2133/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "add", function() { return add; });
2134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; });
2135/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTo", function() { return scrollTo; });
2136/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTop", function() { return scrollTop; });
2137/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollLeft", function() { return scrollLeft; });
2138/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return animate; });
2139/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stop", function() { return stop; });
2140/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "click", function() { return click; });
2141/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blur", function() { return blur; });
2142/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focus", function() { return focus; });
2143/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusin", function() { return focusin; });
2144/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusout", function() { return focusout; });
2145/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyup", function() { return keyup; });
2146/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keydown", function() { return keydown; });
2147/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keypress", function() { return keypress; });
2148/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "submit", function() { return submit; });
2149/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "change", function() { return change; });
2150/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousedown", function() { return mousedown; });
2151/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousemove", function() { return mousemove; });
2152/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseup", function() { return mouseup; });
2153/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseenter", function() { return mouseenter; });
2154/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseleave", function() { return mouseleave; });
2155/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseout", function() { return mouseout; });
2156/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseover", function() { return mouseover; });
2157/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchstart", function() { return touchstart; });
2158/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchend", function() { return touchend; });
2159/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchmove", function() { return touchmove; });
2160/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return resize; });
2161/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scroll", function() { return scroll; });
2162/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/dist/ssr-window.esm.js");
2163/**
2164 * Dom7 2.1.5
2165 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
2166 * http://framework7.io/docs/dom.html
2167 *
2168 * Copyright 2020, Vladimir Kharlampidi
2169 * The iDangero.us
2170 * http://www.idangero.us/
2171 *
2172 * Licensed under MIT
2173 *
2174 * Released on: May 15, 2020
2175 */
2176
2177
2178class Dom7 {
2179  constructor(arr) {
2180    const self = this;
2181    // Create array-like object
2182    for (let i = 0; i < arr.length; i += 1) {
2183      self[i] = arr[i];
2184    }
2185    self.length = arr.length;
2186    // Return collection with methods
2187    return this;
2188  }
2189}
2190
2191function $(selector, context) {
2192  const arr = [];
2193  let i = 0;
2194  if (selector && !context) {
2195    if (selector instanceof Dom7) {
2196      return selector;
2197    }
2198  }
2199  if (selector) {
2200      // String
2201    if (typeof selector === 'string') {
2202      let els;
2203      let tempParent;
2204      const html = selector.trim();
2205      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
2206        let toCreate = 'div';
2207        if (html.indexOf('<li') === 0) toCreate = 'ul';
2208        if (html.indexOf('<tr') === 0) toCreate = 'tbody';
2209        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
2210        if (html.indexOf('<tbody') === 0) toCreate = 'table';
2211        if (html.indexOf('<option') === 0) toCreate = 'select';
2212        tempParent = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement(toCreate);
2213        tempParent.innerHTML = html;
2214        for (i = 0; i < tempParent.childNodes.length; i += 1) {
2215          arr.push(tempParent.childNodes[i]);
2216        }
2217      } else {
2218        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
2219          // Pure ID selector
2220          els = [ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].getElementById(selector.trim().split('#')[1])];
2221        } else {
2222          // Other selectors
2223          els = (context || ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]).querySelectorAll(selector.trim());
2224        }
2225        for (i = 0; i < els.length; i += 1) {
2226          if (els[i]) arr.push(els[i]);
2227        }
2228      }
2229    } else if (selector.nodeType || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]) {
2230      // Node/element
2231      arr.push(selector);
2232    } else if (selector.length > 0 && selector[0].nodeType) {
2233      // Array of elements or instance of Dom
2234      for (i = 0; i < selector.length; i += 1) {
2235        arr.push(selector[i]);
2236      }
2237    }
2238  }
2239  return new Dom7(arr);
2240}
2241
2242$.fn = Dom7.prototype;
2243$.Class = Dom7;
2244$.Dom7 = Dom7;
2245
2246function unique(arr) {
2247  const uniqueArray = [];
2248  for (let i = 0; i < arr.length; i += 1) {
2249    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
2250  }
2251  return uniqueArray;
2252}
2253function toCamelCase(string) {
2254  return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());
2255}
2256
2257function requestAnimationFrame(callback) {
2258  if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].requestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].requestAnimationFrame(callback);
2259  else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitRequestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitRequestAnimationFrame(callback);
2260  return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].setTimeout(callback, 1000 / 60);
2261}
2262function cancelAnimationFrame(id) {
2263  if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].cancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].cancelAnimationFrame(id);
2264  else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitCancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].webkitCancelAnimationFrame(id);
2265  return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].clearTimeout(id);
2266}
2267
2268// Classes and attributes
2269function addClass(className) {
2270  if (typeof className === 'undefined') {
2271    return this;
2272  }
2273  const classes = className.split(' ');
2274  for (let i = 0; i < classes.length; i += 1) {
2275    for (let j = 0; j < this.length; j += 1) {
2276      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);
2277    }
2278  }
2279  return this;
2280}
2281function removeClass(className) {
2282  const classes = className.split(' ');
2283  for (let i = 0; i < classes.length; i += 1) {
2284    for (let j = 0; j < this.length; j += 1) {
2285      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);
2286    }
2287  }
2288  return this;
2289}
2290function hasClass(className) {
2291  if (!this[0]) return false;
2292  return this[0].classList.contains(className);
2293}
2294function toggleClass(className) {
2295  const classes = className.split(' ');
2296  for (let i = 0; i < classes.length; i += 1) {
2297    for (let j = 0; j < this.length; j += 1) {
2298      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);
2299    }
2300  }
2301  return this;
2302}
2303function attr(attrs, value) {
2304  if (arguments.length === 1 && typeof attrs === 'string') {
2305    // Get attr
2306    if (this[0]) return this[0].getAttribute(attrs);
2307    return undefined;
2308  }
2309
2310  // Set attrs
2311  for (let i = 0; i < this.length; i += 1) {
2312    if (arguments.length === 2) {
2313      // String
2314      this[i].setAttribute(attrs, value);
2315    } else {
2316      // Object
2317      // eslint-disable-next-line
2318      for (const attrName in attrs) {
2319        this[i][attrName] = attrs[attrName];
2320        this[i].setAttribute(attrName, attrs[attrName]);
2321      }
2322    }
2323  }
2324  return this;
2325}
2326// eslint-disable-next-line
2327function removeAttr(attr) {
2328  for (let i = 0; i < this.length; i += 1) {
2329    this[i].removeAttribute(attr);
2330  }
2331  return this;
2332}
2333// eslint-disable-next-line
2334function prop(props, value) {
2335  if (arguments.length === 1 && typeof props === 'string') {
2336    // Get prop
2337    if (this[0]) return this[0][props];
2338  } else {
2339    // Set props
2340    for (let i = 0; i < this.length; i += 1) {
2341      if (arguments.length === 2) {
2342        // String
2343        this[i][props] = value;
2344      } else {
2345        // Object
2346        // eslint-disable-next-line
2347        for (const propName in props) {
2348          this[i][propName] = props[propName];
2349        }
2350      }
2351    }
2352    return this;
2353  }
2354}
2355function data(key, value) {
2356  let el;
2357  if (typeof value === 'undefined') {
2358    el = this[0];
2359    // Get value
2360    if (el) {
2361      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
2362        return el.dom7ElementDataStorage[key];
2363      }
2364
2365      const dataKey = el.getAttribute(`data-${key}`);
2366      if (dataKey) {
2367        return dataKey;
2368      }
2369      return undefined;
2370    }
2371    return undefined;
2372  }
2373
2374  // Set value
2375  for (let i = 0; i < this.length; i += 1) {
2376    el = this[i];
2377    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
2378    el.dom7ElementDataStorage[key] = value;
2379  }
2380  return this;
2381}
2382function removeData(key) {
2383  for (let i = 0; i < this.length; i += 1) {
2384    const el = this[i];
2385    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
2386      el.dom7ElementDataStorage[key] = null;
2387      delete el.dom7ElementDataStorage[key];
2388    }
2389  }
2390}
2391function dataset() {
2392  const el = this[0];
2393  if (!el) return undefined;
2394  const dataset = {}; // eslint-disable-line
2395  if (el.dataset) {
2396    // eslint-disable-next-line
2397    for (const dataKey in el.dataset) {
2398      dataset[dataKey] = el.dataset[dataKey];
2399    }
2400  } else {
2401    for (let i = 0; i < el.attributes.length; i += 1) {
2402      // eslint-disable-next-line
2403      const attr = el.attributes[i];
2404      if (attr.name.indexOf('data-') >= 0) {
2405        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;
2406      }
2407    }
2408  }
2409  // eslint-disable-next-line
2410  for (const key in dataset) {
2411    if (dataset[key] === 'false') dataset[key] = false;
2412    else if (dataset[key] === 'true') dataset[key] = true;
2413    else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;
2414  }
2415  return dataset;
2416}
2417function val(value) {
2418  const dom = this;
2419  if (typeof value === 'undefined') {
2420    if (dom[0]) {
2421      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {
2422        const values = [];
2423        for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {
2424          values.push(dom[0].selectedOptions[i].value);
2425        }
2426        return values;
2427      }
2428      return dom[0].value;
2429    }
2430    return undefined;
2431  }
2432
2433  for (let i = 0; i < dom.length; i += 1) {
2434    const el = dom[i];
2435    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {
2436      for (let j = 0; j < el.options.length; j += 1) {
2437        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;
2438      }
2439    } else {
2440      el.value = value;
2441    }
2442  }
2443  return dom;
2444}
2445// Transforms
2446// eslint-disable-next-line
2447function transform(transform) {
2448  for (let i = 0; i < this.length; i += 1) {
2449    const elStyle = this[i].style;
2450    elStyle.webkitTransform = transform;
2451    elStyle.transform = transform;
2452  }
2453  return this;
2454}
2455function transition(duration) {
2456  if (typeof duration !== 'string') {
2457    duration = `${duration}ms`; // eslint-disable-line
2458  }
2459  for (let i = 0; i < this.length; i += 1) {
2460    const elStyle = this[i].style;
2461    elStyle.webkitTransitionDuration = duration;
2462    elStyle.transitionDuration = duration;
2463  }
2464  return this;
2465}
2466// Events
2467function on(...args) {
2468  let [eventType, targetSelector, listener, capture] = args;
2469  if (typeof args[1] === 'function') {
2470    [eventType, listener, capture] = args;
2471    targetSelector = undefined;
2472  }
2473  if (!capture) capture = false;
2474
2475  function handleLiveEvent(e) {
2476    const target = e.target;
2477    if (!target) return;
2478    const eventData = e.target.dom7EventData || [];
2479    if (eventData.indexOf(e) < 0) {
2480      eventData.unshift(e);
2481    }
2482    if ($(target).is(targetSelector)) listener.apply(target, eventData);
2483    else {
2484      const parents = $(target).parents(); // eslint-disable-line
2485      for (let k = 0; k < parents.length; k += 1) {
2486        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
2487      }
2488    }
2489  }
2490  function handleEvent(e) {
2491    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
2492    if (eventData.indexOf(e) < 0) {
2493      eventData.unshift(e);
2494    }
2495    listener.apply(this, eventData);
2496  }
2497  const events = eventType.split(' ');
2498  let j;
2499  for (let i = 0; i < this.length; i += 1) {
2500    const el = this[i];
2501    if (!targetSelector) {
2502      for (j = 0; j < events.length; j += 1) {
2503        const event = events[j];
2504        if (!el.dom7Listeners) el.dom7Listeners = {};
2505        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
2506        el.dom7Listeners[event].push({
2507          listener,
2508          proxyListener: handleEvent,
2509        });
2510        el.addEventListener(event, handleEvent, capture);
2511      }
2512    } else {
2513      // Live events
2514      for (j = 0; j < events.length; j += 1) {
2515        const event = events[j];
2516        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
2517        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];
2518        el.dom7LiveListeners[event].push({
2519          listener,
2520          proxyListener: handleLiveEvent,
2521        });
2522        el.addEventListener(event, handleLiveEvent, capture);
2523      }
2524    }
2525  }
2526  return this;
2527}
2528function off(...args) {
2529  let [eventType, targetSelector, listener, capture] = args;
2530  if (typeof args[1] === 'function') {
2531    [eventType, listener, capture] = args;
2532    targetSelector = undefined;
2533  }
2534  if (!capture) capture = false;
2535
2536  const events = eventType.split(' ');
2537  for (let i = 0; i < events.length; i += 1) {
2538    const event = events[i];
2539    for (let j = 0; j < this.length; j += 1) {
2540      const el = this[j];
2541      let handlers;
2542      if (!targetSelector && el.dom7Listeners) {
2543        handlers = el.dom7Listeners[event];
2544      } else if (targetSelector && el.dom7LiveListeners) {
2545        handlers = el.dom7LiveListeners[event];
2546      }
2547      if (handlers && handlers.length) {
2548        for (let k = handlers.length - 1; k >= 0; k -= 1) {
2549          const handler = handlers[k];
2550          if (listener && handler.listener === listener) {
2551            el.removeEventListener(event, handler.proxyListener, capture);
2552            handlers.splice(k, 1);
2553          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
2554            el.removeEventListener(event, handler.proxyListener, capture);
2555            handlers.splice(k, 1);
2556          } else if (!listener) {
2557            el.removeEventListener(event, handler.proxyListener, capture);
2558            handlers.splice(k, 1);
2559          }
2560        }
2561      }
2562    }
2563  }
2564  return this;
2565}
2566function once(...args) {
2567  const dom = this;
2568  let [eventName, targetSelector, listener, capture] = args;
2569  if (typeof args[1] === 'function') {
2570    [eventName, listener, capture] = args;
2571    targetSelector = undefined;
2572  }
2573  function onceHandler(...eventArgs) {
2574    listener.apply(this, eventArgs);
2575    dom.off(eventName, targetSelector, onceHandler, capture);
2576    if (onceHandler.dom7proxy) {
2577      delete onceHandler.dom7proxy;
2578    }
2579  }
2580  onceHandler.dom7proxy = listener;
2581  return dom.on(eventName, targetSelector, onceHandler, capture);
2582}
2583function trigger(...args) {
2584  const events = args[0].split(' ');
2585  const eventData = args[1];
2586  for (let i = 0; i < events.length; i += 1) {
2587    const event = events[i];
2588    for (let j = 0; j < this.length; j += 1) {
2589      const el = this[j];
2590      let evt;
2591      try {
2592        evt = new ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].CustomEvent(event, {
2593          detail: eventData,
2594          bubbles: true,
2595          cancelable: true,
2596        });
2597      } catch (e) {
2598        evt = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createEvent('Event');
2599        evt.initEvent(event, true, true);
2600        evt.detail = eventData;
2601      }
2602      // eslint-disable-next-line
2603      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
2604      el.dispatchEvent(evt);
2605      el.dom7EventData = [];
2606      delete el.dom7EventData;
2607    }
2608  }
2609  return this;
2610}
2611function transitionEnd(callback) {
2612  const events = ['webkitTransitionEnd', 'transitionend'];
2613  const dom = this;
2614  let i;
2615  function fireCallBack(e) {
2616    /* jshint validthis:true */
2617    if (e.target !== this) return;
2618    callback.call(this, e);
2619    for (i = 0; i < events.length; i += 1) {
2620      dom.off(events[i], fireCallBack);
2621    }
2622  }
2623  if (callback) {
2624    for (i = 0; i < events.length; i += 1) {
2625      dom.on(events[i], fireCallBack);
2626    }
2627  }
2628  return this;
2629}
2630function animationEnd(callback) {
2631  const events = ['webkitAnimationEnd', 'animationend'];
2632  const dom = this;
2633  let i;
2634  function fireCallBack(e) {
2635    if (e.target !== this) return;
2636    callback.call(this, e);
2637    for (i = 0; i < events.length; i += 1) {
2638      dom.off(events[i], fireCallBack);
2639    }
2640  }
2641  if (callback) {
2642    for (i = 0; i < events.length; i += 1) {
2643      dom.on(events[i], fireCallBack);
2644    }
2645  }
2646  return this;
2647}
2648// Sizing/Styles
2649function width() {
2650  if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) {
2651    return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].innerWidth;
2652  }
2653
2654  if (this.length > 0) {
2655    return parseFloat(this.css('width'));
2656  }
2657
2658  return null;
2659}
2660function outerWidth(includeMargins) {
2661  if (this.length > 0) {
2662    if (includeMargins) {
2663      // eslint-disable-next-line
2664      const styles = this.styles();
2665      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
2666    }
2667    return this[0].offsetWidth;
2668  }
2669  return null;
2670}
2671function height() {
2672  if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) {
2673    return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].innerHeight;
2674  }
2675
2676  if (this.length > 0) {
2677    return parseFloat(this.css('height'));
2678  }
2679
2680  return null;
2681}
2682function outerHeight(includeMargins) {
2683  if (this.length > 0) {
2684    if (includeMargins) {
2685      // eslint-disable-next-line
2686      const styles = this.styles();
2687      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
2688    }
2689    return this[0].offsetHeight;
2690  }
2691  return null;
2692}
2693function offset() {
2694  if (this.length > 0) {
2695    const el = this[0];
2696    const box = el.getBoundingClientRect();
2697    const body = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].body;
2698    const clientTop = el.clientTop || body.clientTop || 0;
2699    const clientLeft = el.clientLeft || body.clientLeft || 0;
2700    const scrollTop = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].scrollY : el.scrollTop;
2701    const scrollLeft = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].scrollX : el.scrollLeft;
2702    return {
2703      top: (box.top + scrollTop) - clientTop,
2704      left: (box.left + scrollLeft) - clientLeft,
2705    };
2706  }
2707
2708  return null;
2709}
2710function hide() {
2711  for (let i = 0; i < this.length; i += 1) {
2712    this[i].style.display = 'none';
2713  }
2714  return this;
2715}
2716function show() {
2717  for (let i = 0; i < this.length; i += 1) {
2718    const el = this[i];
2719    if (el.style.display === 'none') {
2720      el.style.display = '';
2721    }
2722    if (ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(el, null).getPropertyValue('display') === 'none') {
2723      // Still not visible
2724      el.style.display = 'block';
2725    }
2726  }
2727  return this;
2728}
2729function styles() {
2730  if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(this[0], null);
2731  return {};
2732}
2733function css(props, value) {
2734  let i;
2735  if (arguments.length === 1) {
2736    if (typeof props === 'string') {
2737      if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(this[0], null).getPropertyValue(props);
2738    } else {
2739      for (i = 0; i < this.length; i += 1) {
2740        // eslint-disable-next-line
2741        for (let prop in props) {
2742          this[i].style[prop] = props[prop];
2743        }
2744      }
2745      return this;
2746    }
2747  }
2748  if (arguments.length === 2 && typeof props === 'string') {
2749    for (i = 0; i < this.length; i += 1) {
2750      this[i].style[props] = value;
2751    }
2752    return this;
2753  }
2754  return this;
2755}
2756
2757// Dom manipulation
2758function toArray() {
2759  const arr = [];
2760  for (let i = 0; i < this.length; i += 1) {
2761    arr.push(this[i]);
2762  }
2763  return arr;
2764}
2765// Iterate over the collection passing elements to `callback`
2766function each(callback) {
2767  // Don't bother continuing without a callback
2768  if (!callback) return this;
2769  // Iterate over the current collection
2770  for (let i = 0; i < this.length; i += 1) {
2771    // If the callback returns false
2772    if (callback.call(this[i], i, this[i]) === false) {
2773      // End the loop early
2774      return this;
2775    }
2776  }
2777  // Return `this` to allow chained DOM operations
2778  return this;
2779}
2780function forEach(callback) {
2781  // Don't bother continuing without a callback
2782  if (!callback) return this;
2783  // Iterate over the current collection
2784  for (let i = 0; i < this.length; i += 1) {
2785    // If the callback returns false
2786    if (callback.call(this[i], this[i], i) === false) {
2787      // End the loop early
2788      return this;
2789    }
2790  }
2791  // Return `this` to allow chained DOM operations
2792  return this;
2793}
2794function filter(callback) {
2795  const matchedItems = [];
2796  const dom = this;
2797  for (let i = 0; i < dom.length; i += 1) {
2798    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);
2799  }
2800  return new Dom7(matchedItems);
2801}
2802function map(callback) {
2803  const modifiedItems = [];
2804  const dom = this;
2805  for (let i = 0; i < dom.length; i += 1) {
2806    modifiedItems.push(callback.call(dom[i], i, dom[i]));
2807  }
2808  return new Dom7(modifiedItems);
2809}
2810// eslint-disable-next-line
2811function html(html) {
2812  if (typeof html === 'undefined') {
2813    return this[0] ? this[0].innerHTML : undefined;
2814  }
2815
2816  for (let i = 0; i < this.length; i += 1) {
2817    this[i].innerHTML = html;
2818  }
2819  return this;
2820}
2821// eslint-disable-next-line
2822function text(text) {
2823  if (typeof text === 'undefined') {
2824    if (this[0]) {
2825      return this[0].textContent.trim();
2826    }
2827    return null;
2828  }
2829
2830  for (let i = 0; i < this.length; i += 1) {
2831    this[i].textContent = text;
2832  }
2833  return this;
2834}
2835function is(selector) {
2836  const el = this[0];
2837  let compareWith;
2838  let i;
2839  if (!el || typeof selector === 'undefined') return false;
2840  if (typeof selector === 'string') {
2841    if (el.matches) return el.matches(selector);
2842    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
2843    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);
2844
2845    compareWith = $(selector);
2846    for (i = 0; i < compareWith.length; i += 1) {
2847      if (compareWith[i] === el) return true;
2848    }
2849    return false;
2850  } else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"];
2851  else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"];
2852
2853  if (selector.nodeType || selector instanceof Dom7) {
2854    compareWith = selector.nodeType ? [selector] : selector;
2855    for (i = 0; i < compareWith.length; i += 1) {
2856      if (compareWith[i] === el) return true;
2857    }
2858    return false;
2859  }
2860  return false;
2861}
2862function indexOf(el) {
2863  for (let i = 0; i < this.length; i += 1) {
2864    if (this[i] === el) return i;
2865  }
2866  return -1;
2867}
2868function index() {
2869  let child = this[0];
2870  let i;
2871  if (child) {
2872    i = 0;
2873    // eslint-disable-next-line
2874    while ((child = child.previousSibling) !== null) {
2875      if (child.nodeType === 1) i += 1;
2876    }
2877    return i;
2878  }
2879  return undefined;
2880}
2881// eslint-disable-next-line
2882function eq(index) {
2883  if (typeof index === 'undefined') return this;
2884  const length = this.length;
2885  let returnIndex;
2886  if (index > length - 1) {
2887    return new Dom7([]);
2888  }
2889  if (index < 0) {
2890    returnIndex = length + index;
2891    if (returnIndex < 0) return new Dom7([]);
2892    return new Dom7([this[returnIndex]]);
2893  }
2894  return new Dom7([this[index]]);
2895}
2896function append(...args) {
2897  let newChild;
2898
2899  for (let k = 0; k < args.length; k += 1) {
2900    newChild = args[k];
2901    for (let i = 0; i < this.length; i += 1) {
2902      if (typeof newChild === 'string') {
2903        const tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement('div');
2904        tempDiv.innerHTML = newChild;
2905        while (tempDiv.firstChild) {
2906          this[i].appendChild(tempDiv.firstChild);
2907        }
2908      } else if (newChild instanceof Dom7) {
2909        for (let j = 0; j < newChild.length; j += 1) {
2910          this[i].appendChild(newChild[j]);
2911        }
2912      } else {
2913        this[i].appendChild(newChild);
2914      }
2915    }
2916  }
2917
2918  return this;
2919}
2920// eslint-disable-next-line
2921function appendTo(parent) {
2922  $(parent).append(this);
2923  return this;
2924}
2925function prepend(newChild) {
2926  let i;
2927  let j;
2928  for (i = 0; i < this.length; i += 1) {
2929    if (typeof newChild === 'string') {
2930      const tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__["document"].createElement('div');
2931      tempDiv.innerHTML = newChild;
2932      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
2933        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
2934      }
2935    } else if (newChild instanceof Dom7) {
2936      for (j = 0; j < newChild.length; j += 1) {
2937        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
2938      }
2939    } else {
2940      this[i].insertBefore(newChild, this[i].childNodes[0]);
2941    }
2942  }
2943  return this;
2944}
2945// eslint-disable-next-line
2946function prependTo(parent) {
2947  $(parent).prepend(this);
2948  return this;
2949}
2950function insertBefore(selector) {
2951  const before = $(selector);
2952  for (let i = 0; i < this.length; i += 1) {
2953    if (before.length === 1) {
2954      before[0].parentNode.insertBefore(this[i], before[0]);
2955    } else if (before.length > 1) {
2956      for (let j = 0; j < before.length; j += 1) {
2957        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
2958      }
2959    }
2960  }
2961}
2962function insertAfter(selector) {
2963  const after = $(selector);
2964  for (let i = 0; i < this.length; i += 1) {
2965    if (after.length === 1) {
2966      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
2967    } else if (after.length > 1) {
2968      for (let j = 0; j < after.length; j += 1) {
2969        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
2970      }
2971    }
2972  }
2973}
2974function next(selector) {
2975  if (this.length > 0) {
2976    if (selector) {
2977      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
2978        return new Dom7([this[0].nextElementSibling]);
2979      }
2980      return new Dom7([]);
2981    }
2982
2983    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);
2984    return new Dom7([]);
2985  }
2986  return new Dom7([]);
2987}
2988function nextAll(selector) {
2989  const nextEls = [];
2990  let el = this[0];
2991  if (!el) return new Dom7([]);
2992  while (el.nextElementSibling) {
2993    const next = el.nextElementSibling; // eslint-disable-line
2994    if (selector) {
2995      if ($(next).is(selector)) nextEls.push(next);
2996    } else nextEls.push(next);
2997    el = next;
2998  }
2999  return new Dom7(nextEls);
3000}
3001function prev(selector) {
3002  if (this.length > 0) {
3003    const el = this[0];
3004    if (selector) {
3005      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
3006        return new Dom7([el.previousElementSibling]);
3007      }
3008      return new Dom7([]);
3009    }
3010
3011    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);
3012    return new Dom7([]);
3013  }
3014  return new Dom7([]);
3015}
3016function prevAll(selector) {
3017  const prevEls = [];
3018  let el = this[0];
3019  if (!el) return new Dom7([]);
3020  while (el.previousElementSibling) {
3021    const prev = el.previousElementSibling; // eslint-disable-line
3022    if (selector) {
3023      if ($(prev).is(selector)) prevEls.push(prev);
3024    } else prevEls.push(prev);
3025    el = prev;
3026  }
3027  return new Dom7(prevEls);
3028}
3029function siblings(selector) {
3030  return this.nextAll(selector).add(this.prevAll(selector));
3031}
3032function parent(selector) {
3033  const parents = []; // eslint-disable-line
3034  for (let i = 0; i < this.length; i += 1) {
3035    if (this[i].parentNode !== null) {
3036      if (selector) {
3037        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
3038      } else {
3039        parents.push(this[i].parentNode);
3040      }
3041    }
3042  }
3043  return $(unique(parents));
3044}
3045function parents(selector) {
3046  const parents = []; // eslint-disable-line
3047  for (let i = 0; i < this.length; i += 1) {
3048    let parent = this[i].parentNode; // eslint-disable-line
3049    while (parent) {
3050      if (selector) {
3051        if ($(parent).is(selector)) parents.push(parent);
3052      } else {
3053        parents.push(parent);
3054      }
3055      parent = parent.parentNode;
3056    }
3057  }
3058  return $(unique(parents));
3059}
3060function closest(selector) {
3061  let closest = this; // eslint-disable-line
3062  if (typeof selector === 'undefined') {
3063    return new Dom7([]);
3064  }
3065  if (!closest.is(selector)) {
3066    closest = closest.parents(selector).eq(0);
3067  }
3068  return closest;
3069}
3070function find(selector) {
3071  const foundElements = [];
3072  for (let i = 0; i < this.length; i += 1) {
3073    const found = this[i].querySelectorAll(selector);
3074    for (let j = 0; j < found.length; j += 1) {
3075      foundElements.push(found[j]);
3076    }
3077  }
3078  return new Dom7(foundElements);
3079}
3080function children(selector) {
3081  const children = []; // eslint-disable-line
3082  for (let i = 0; i < this.length; i += 1) {
3083    const childNodes = this[i].childNodes;
3084
3085    for (let j = 0; j < childNodes.length; j += 1) {
3086      if (!selector) {
3087        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);
3088      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
3089        children.push(childNodes[j]);
3090      }
3091    }
3092  }
3093  return new Dom7(unique(children));
3094}
3095function remove() {
3096  for (let i = 0; i < this.length; i += 1) {
3097    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
3098  }
3099  return this;
3100}
3101function detach() {
3102  return this.remove();
3103}
3104function add(...args) {
3105  const dom = this;
3106  let i;
3107  let j;
3108  for (i = 0; i < args.length; i += 1) {
3109    const toAdd = $(args[i]);
3110    for (j = 0; j < toAdd.length; j += 1) {
3111      dom[dom.length] = toAdd[j];
3112      dom.length += 1;
3113    }
3114  }
3115  return dom;
3116}
3117function empty() {
3118  for (let i = 0; i < this.length; i += 1) {
3119    const el = this[i];
3120    if (el.nodeType === 1) {
3121      for (let j = 0; j < el.childNodes.length; j += 1) {
3122        if (el.childNodes[j].parentNode) {
3123          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
3124        }
3125      }
3126      el.textContent = '';
3127    }
3128  }
3129  return this;
3130}
3131
3132function scrollTo(...args) {
3133  let [left, top, duration, easing, callback] = args;
3134  if (args.length === 4 && typeof easing === 'function') {
3135    callback = easing;
3136    [left, top, duration, callback, easing] = args;
3137  }
3138  if (typeof easing === 'undefined') easing = 'swing';
3139
3140  return this.each(function animate() {
3141    const el = this;
3142    let currentTop;
3143    let currentLeft;
3144    let maxTop;
3145    let maxLeft;
3146    let newTop;
3147    let newLeft;
3148    let scrollTop; // eslint-disable-line
3149    let scrollLeft; // eslint-disable-line
3150    let animateTop = top > 0 || top === 0;
3151    let animateLeft = left > 0 || left === 0;
3152    if (typeof easing === 'undefined') {
3153      easing = 'swing';
3154    }
3155    if (animateTop) {
3156      currentTop = el.scrollTop;
3157      if (!duration) {
3158        el.scrollTop = top;
3159      }
3160    }
3161    if (animateLeft) {
3162      currentLeft = el.scrollLeft;
3163      if (!duration) {
3164        el.scrollLeft = left;
3165      }
3166    }
3167    if (!duration) return;
3168    if (animateTop) {
3169      maxTop = el.scrollHeight - el.offsetHeight;
3170      newTop = Math.max(Math.min(top, maxTop), 0);
3171    }
3172    if (animateLeft) {
3173      maxLeft = el.scrollWidth - el.offsetWidth;
3174      newLeft = Math.max(Math.min(left, maxLeft), 0);
3175    }
3176    let startTime = null;
3177    if (animateTop && newTop === currentTop) animateTop = false;
3178    if (animateLeft && newLeft === currentLeft) animateLeft = false;
3179    function render(time = new Date().getTime()) {
3180      if (startTime === null) {
3181        startTime = time;
3182      }
3183      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
3184      const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));
3185      let done;
3186      if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));
3187      if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));
3188      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
3189        el.scrollTop = newTop;
3190        done = true;
3191      }
3192      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
3193        el.scrollTop = newTop;
3194        done = true;
3195      }
3196      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
3197        el.scrollLeft = newLeft;
3198        done = true;
3199      }
3200      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
3201        el.scrollLeft = newLeft;
3202        done = true;
3203      }
3204
3205      if (done) {
3206        if (callback) callback();
3207        return;
3208      }
3209      if (animateTop) el.scrollTop = scrollTop;
3210      if (animateLeft) el.scrollLeft = scrollLeft;
3211      requestAnimationFrame(render);
3212    }
3213    requestAnimationFrame(render);
3214  });
3215}
3216// scrollTop(top, duration, easing, callback) {
3217function scrollTop(...args) {
3218  let [top, duration, easing, callback] = args;
3219  if (args.length === 3 && typeof easing === 'function') {
3220    [top, duration, callback, easing] = args;
3221  }
3222  const dom = this;
3223  if (typeof top === 'undefined') {
3224    if (dom.length > 0) return dom[0].scrollTop;
3225    return null;
3226  }
3227  return dom.scrollTo(undefined, top, duration, easing, callback);
3228}
3229function scrollLeft(...args) {
3230  let [left, duration, easing, callback] = args;
3231  if (args.length === 3 && typeof easing === 'function') {
3232    [left, duration, callback, easing] = args;
3233  }
3234  const dom = this;
3235  if (typeof left === 'undefined') {
3236    if (dom.length > 0) return dom[0].scrollLeft;
3237    return null;
3238  }
3239  return dom.scrollTo(left, undefined, duration, easing, callback);
3240}
3241
3242function animate(initialProps, initialParams) {
3243  const els = this;
3244  const a = {
3245    props: Object.assign({}, initialProps),
3246    params: Object.assign({
3247      duration: 300,
3248      easing: 'swing', // or 'linear'
3249      /* Callbacks
3250      begin(elements)
3251      complete(elements)
3252      progress(elements, complete, remaining, start, tweenValue)
3253      */
3254    }, initialParams),
3255
3256    elements: els,
3257    animating: false,
3258    que: [],
3259
3260    easingProgress(easing, progress) {
3261      if (easing === 'swing') {
3262        return 0.5 - (Math.cos(progress * Math.PI) / 2);
3263      }
3264      if (typeof easing === 'function') {
3265        return easing(progress);
3266      }
3267      return progress;
3268    },
3269    stop() {
3270      if (a.frameId) {
3271        cancelAnimationFrame(a.frameId);
3272      }
3273      a.animating = false;
3274      a.elements.each((index, el) => {
3275        const element = el;
3276        delete element.dom7AnimateInstance;
3277      });
3278      a.que = [];
3279    },
3280    done(complete) {
3281      a.animating = false;
3282      a.elements.each((index, el) => {
3283        const element = el;
3284        delete element.dom7AnimateInstance;
3285      });
3286      if (complete) complete(els);
3287      if (a.que.length > 0) {
3288        const que = a.que.shift();
3289        a.animate(que[0], que[1]);
3290      }
3291    },
3292    animate(props, params) {
3293      if (a.animating) {
3294        a.que.push([props, params]);
3295        return a;
3296      }
3297      const elements = [];
3298
3299      // Define & Cache Initials & Units
3300      a.elements.each((index, el) => {
3301        let initialFullValue;
3302        let initialValue;
3303        let unit;
3304        let finalValue;
3305        let finalFullValue;
3306
3307        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
3308
3309        elements[index] = {
3310          container: el,
3311        };
3312        Object.keys(props).forEach((prop) => {
3313          initialFullValue = ssr_window__WEBPACK_IMPORTED_MODULE_0__["window"].getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
3314          initialValue = parseFloat(initialFullValue);
3315          unit = initialFullValue.replace(initialValue, '');
3316          finalValue = parseFloat(props[prop]);
3317          finalFullValue = props[prop] + unit;
3318          elements[index][prop] = {
3319            initialFullValue,
3320            initialValue,
3321            unit,
3322            finalValue,
3323            finalFullValue,
3324            currentValue: initialValue,
3325          };
3326        });
3327      });
3328
3329      let startTime = null;
3330      let time;
3331      let elementsDone = 0;
3332      let propsDone = 0;
3333      let done;
3334      let began = false;
3335
3336      a.animating = true;
3337
3338      function render() {
3339        time = new Date().getTime();
3340        let progress;
3341        let easeProgress;
3342        // let el;
3343        if (!began) {
3344          began = true;
3345          if (params.begin) params.begin(els);
3346        }
3347        if (startTime === null) {
3348          startTime = time;
3349        }
3350        if (params.progress) {
3351          // eslint-disable-next-line
3352          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);
3353        }
3354
3355        elements.forEach((element) => {
3356          const el = element;
3357          if (done || el.done) return;
3358          Object.keys(props).forEach((prop) => {
3359            if (done || el.done) return;
3360            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
3361            easeProgress = a.easingProgress(params.easing, progress);
3362            const { initialValue, finalValue, unit } = el[prop];
3363            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));
3364            const currentValue = el[prop].currentValue;
3365
3366            if (
3367              (finalValue > initialValue && currentValue >= finalValue) ||
3368              (finalValue < initialValue && currentValue <= finalValue)) {
3369              el.container.style[prop] = finalValue + unit;
3370              propsDone += 1;
3371              if (propsDone === Object.keys(props).length) {
3372                el.done = true;
3373                elementsDone += 1;
3374              }
3375              if (elementsDone === elements.length) {
3376                done = true;
3377              }
3378            }
3379            if (done) {
3380              a.done(params.complete);
3381              return;
3382            }
3383            el.container.style[prop] = currentValue + unit;
3384          });
3385        });
3386        if (done) return;
3387        // Then call
3388        a.frameId = requestAnimationFrame(render);
3389      }
3390      a.frameId = requestAnimationFrame(render);
3391      return a;
3392    },
3393  };
3394
3395  if (a.elements.length === 0) {
3396    return els;
3397  }
3398
3399  let animateInstance;
3400  for (let i = 0; i < a.elements.length; i += 1) {
3401    if (a.elements[i].dom7AnimateInstance) {
3402      animateInstance = a.elements[i].dom7AnimateInstance;
3403    } else a.elements[i].dom7AnimateInstance = a;
3404  }
3405  if (!animateInstance) {
3406    animateInstance = a;
3407  }
3408
3409  if (initialProps === 'stop') {
3410    animateInstance.stop();
3411  } else {
3412    animateInstance.animate(a.props, a.params);
3413  }
3414
3415  return els;
3416}
3417
3418function stop() {
3419  const els = this;
3420  for (let i = 0; i < els.length; i += 1) {
3421    if (els[i].dom7AnimateInstance) {
3422      els[i].dom7AnimateInstance.stop();
3423    }
3424  }
3425}
3426
3427const noTrigger = ('resize scroll').split(' ');
3428function eventShortcut(name, ...args) {
3429  if (typeof args[0] === 'undefined') {
3430    for (let i = 0; i < this.length; i += 1) {
3431      if (noTrigger.indexOf(name) < 0) {
3432        if (name in this[i]) this[i][name]();
3433        else {
3434          $(this[i]).trigger(name);
3435        }
3436      }
3437    }
3438    return this;
3439  }
3440  return this.on(name, ...args);
3441}
3442
3443function click(...args) {
3444  return eventShortcut.bind(this)('click', ...args);
3445}
3446function blur(...args) {
3447  return eventShortcut.bind(this)('blur', ...args);
3448}
3449function focus(...args) {
3450  return eventShortcut.bind(this)('focus', ...args);
3451}
3452function focusin(...args) {
3453  return eventShortcut.bind(this)('focusin', ...args);
3454}
3455function focusout(...args) {
3456  return eventShortcut.bind(this)('focusout', ...args);
3457}
3458function keyup(...args) {
3459  return eventShortcut.bind(this)('keyup', ...args);
3460}
3461function keydown(...args) {
3462  return eventShortcut.bind(this)('keydown', ...args);
3463}
3464function keypress(...args) {
3465  return eventShortcut.bind(this)('keypress', ...args);
3466}
3467function submit(...args) {
3468  return eventShortcut.bind(this)('submit', ...args);
3469}
3470function change(...args) {
3471  return eventShortcut.bind(this)('change', ...args);
3472}
3473function mousedown(...args) {
3474  return eventShortcut.bind(this)('mousedown', ...args);
3475}
3476function mousemove(...args) {
3477  return eventShortcut.bind(this)('mousemove', ...args);
3478}
3479function mouseup(...args) {
3480  return eventShortcut.bind(this)('mouseup', ...args);
3481}
3482function mouseenter(...args) {
3483  return eventShortcut.bind(this)('mouseenter', ...args);
3484}
3485function mouseleave(...args) {
3486  return eventShortcut.bind(this)('mouseleave', ...args);
3487}
3488function mouseout(...args) {
3489  return eventShortcut.bind(this)('mouseout', ...args);
3490}
3491function mouseover(...args) {
3492  return eventShortcut.bind(this)('mouseover', ...args);
3493}
3494function touchstart(...args) {
3495  return eventShortcut.bind(this)('touchstart', ...args);
3496}
3497function touchend(...args) {
3498  return eventShortcut.bind(this)('touchend', ...args);
3499}
3500function touchmove(...args) {
3501  return eventShortcut.bind(this)('touchmove', ...args);
3502}
3503function resize(...args) {
3504  return eventShortcut.bind(this)('resize', ...args);
3505}
3506function scroll(...args) {
3507  return eventShortcut.bind(this)('scroll', ...args);
3508}
3509
3510
3511
3512
3513/***/ }),
3514
vendor: 2,254 bytes, lines 3515-3567
3515/***/ "./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js":
3516/*!*******************************************************************!*\
3517  !*** ./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js ***!
3518  \*******************************************************************/
3519/*! exports provided: default */
3520/***/ (function(module, __webpack_exports__, __webpack_require__) {
3521
3522"use strict";
3523__webpack_require__.r(__webpack_exports__);
3524/* harmony import */ var is_dom_node__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-dom-node */ "./node_modules/is-dom-node/dist/is-dom-node.es.js");
3525/*! @license is-dom-node-list v1.2.1
3526
3527	Copyright 2018 Fisssion LLC.
3528
3529	Permission is hereby granted, free of charge, to any person obtaining a copy
3530	of this software and associated documentation files (the "Software"), to deal
3531	in the Software without restriction, including without limitation the rights
3532	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3533	copies of the Software, and to permit persons to whom the Software is
3534	furnished to do so, subject to the following conditions:
3535
3536	The above copyright notice and this permission notice shall be included in all
3537	copies or substantial portions of the Software.
3538
3539	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3540	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3541	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3542	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3543	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3544	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3545	SOFTWARE.
3546
3547*/
3548
3549
3550function isDomNodeList(x) {
3551	var prototypeToString = Object.prototype.toString.call(x);
3552	var regex = /^\[object (HTMLCollection|NodeList|Object)\]$/;
3553
3554	return typeof window.NodeList === 'object'
3555		? x instanceof window.NodeList
3556		: x !== null &&
3557				typeof x === 'object' &&
3558				typeof x.length === 'number' &&
3559				regex.test(prototypeToString) &&
3560				(x.length === 0 || Object(is_dom_node__WEBPACK_IMPORTED_MODULE_0__["default"])(x[0]))
3561}
3562
3563/* harmony default export */ __webpack_exports__["default"] = (isDomNodeList);
3564
3565
3566/***/ }),
3567
vendor: 1,817 bytes, lines 3568-3613
3568/***/ "./node_modules/is-dom-node/dist/is-dom-node.es.js":
3569/*!*********************************************************!*\
3570  !*** ./node_modules/is-dom-node/dist/is-dom-node.es.js ***!
3571  \*********************************************************/
3572/*! exports provided: default */
3573/***/ (function(module, __webpack_exports__, __webpack_require__) {
3574
3575"use strict";
3576__webpack_require__.r(__webpack_exports__);
3577/*! @license is-dom-node v1.0.4
3578
3579	Copyright 2018 Fisssion LLC.
3580
3581	Permission is hereby granted, free of charge, to any person obtaining a copy
3582	of this software and associated documentation files (the "Software"), to deal
3583	in the Software without restriction, including without limitation the rights
3584	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3585	copies of the Software, and to permit persons to whom the Software is
3586	furnished to do so, subject to the following conditions:
3587
3588	The above copyright notice and this permission notice shall be included in all
3589	copies or substantial portions of the Software.
3590
3591	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3592	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3593	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3594	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3595	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3596	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3597	SOFTWARE.
3598
3599*/
3600function isDomNode(x) {
3601	return typeof window.Node === 'object'
3602		? x instanceof window.Node
3603		: x !== null &&
3604				typeof x === 'object' &&
3605				typeof x.nodeType === 'number' &&
3606				typeof x.nodeName === 'string'
3607}
3608
3609/* harmony default export */ __webpack_exports__["default"] = (isDomNode);
3610
3611
3612/***/ }),
3613
vendor: 1,981 bytes, lines 3614-3669
3614/***/ "./node_modules/miniraf/dist/miniraf.es.js":
3615/*!*************************************************!*\
3616  !*** ./node_modules/miniraf/dist/miniraf.es.js ***!
3617  \*************************************************/
3618/*! exports provided: default */
3619/***/ (function(module, __webpack_exports__, __webpack_require__) {
3620
3621"use strict";
3622__webpack_require__.r(__webpack_exports__);
3623/*! @license miniraf v1.0.0
3624
3625	Copyright 2018 Fisssion LLC.
3626
3627	Permission is hereby granted, free of charge, to any person obtaining a copy
3628	of this software and associated documentation files (the "Software"), to deal
3629	in the Software without restriction, including without limitation the rights
3630	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3631	copies of the Software, and to permit persons to whom the Software is
3632	furnished to do so, subject to the following conditions:
3633
3634	The above copyright notice and this permission notice shall be included in all
3635	copies or substantial portions of the Software.
3636
3637	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3638	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3639	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3640	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3641	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3642	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3643	SOFTWARE.
3644
3645*/
3646var polyfill = (function () {
3647	var clock = Date.now();
3648
3649	return function (callback) {
3650		var currentTime = Date.now();
3651		if (currentTime - clock > 16) {
3652			clock = currentTime;
3653			callback(currentTime);
3654		} else {
3655			setTimeout(function () { return polyfill(callback); }, 0);
3656		}
3657	}
3658})();
3659
3660var index = window.requestAnimationFrame ||
3661	window.webkitRequestAnimationFrame ||
3662	window.mozRequestAnimationFrame ||
3663	polyfill;
3664
3665/* harmony default export */ __webpack_exports__["default"] = (index);
3666
3667
3668/***/ }),
3669
vendor: 89,123 bytes, lines 3670-6299
3670/***/ "./node_modules/popper.js/dist/esm/popper.js":
3671/*!***************************************************!*\
3672  !*** ./node_modules/popper.js/dist/esm/popper.js ***!
3673  \***************************************************/
3674/*! exports provided: default */
3675/***/ (function(module, __webpack_exports__, __webpack_require__) {
3676
3677"use strict";
3678__webpack_require__.r(__webpack_exports__);
3679/* WEBPACK VAR INJECTION */(function(global) {/**!
3680 * @fileOverview Kickass library to create and place poppers near their reference elements.
3681 * @version 1.16.1
3682 * @license
3683 * Copyright (c) 2016 Federico Zivolo and contributors
3684 *
3685 * Permission is hereby granted, free of charge, to any person obtaining a copy
3686 * of this software and associated documentation files (the "Software"), to deal
3687 * in the Software without restriction, including without limitation the rights
3688 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3689 * copies of the Software, and to permit persons to whom the Software is
3690 * furnished to do so, subject to the following conditions:
3691 *
3692 * The above copyright notice and this permission notice shall be included in all
3693 * copies or substantial portions of the Software.
3694 *
3695 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3696 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3697 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3698 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3699 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3700 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3701 * SOFTWARE.
3702 */
3703var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
3704
3705var timeoutDuration = function () {
3706  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
3707  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
3708    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
3709      return 1;
3710    }
3711  }
3712  return 0;
3713}();
3714
3715function microtaskDebounce(fn) {
3716  var called = false;
3717  return function () {
3718    if (called) {
3719      return;
3720    }
3721    called = true;
3722    window.Promise.resolve().then(function () {
3723      called = false;
3724      fn();
3725    });
3726  };
3727}
3728
3729function taskDebounce(fn) {
3730  var scheduled = false;
3731  return function () {
3732    if (!scheduled) {
3733      scheduled = true;
3734      setTimeout(function () {
3735        scheduled = false;
3736        fn();
3737      }, timeoutDuration);
3738    }
3739  };
3740}
3741
3742var supportsMicroTasks = isBrowser && window.Promise;
3743
3744/**
3745* Create a debounced version of a method, that's asynchronously deferred
3746* but called in the minimum time possible.
3747*
3748* @method
3749* @memberof Popper.Utils
3750* @argument {Function} fn
3751* @returns {Function}
3752*/
3753var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
3754
3755/**
3756 * Check if the given variable is a function
3757 * @method
3758 * @memberof Popper.Utils
3759 * @argument {Any} functionToCheck - variable to check
3760 * @returns {Boolean} answer to: is a function?
3761 */
3762function isFunction(functionToCheck) {
3763  var getType = {};
3764  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
3765}
3766
3767/**
3768 * Get CSS computed property of the given element
3769 * @method
3770 * @memberof Popper.Utils
3771 * @argument {Eement} element
3772 * @argument {String} property
3773 */
3774function getStyleComputedProperty(element, property) {
3775  if (element.nodeType !== 1) {
3776    return [];
3777  }
3778  // NOTE: 1 DOM access here
3779  var window = element.ownerDocument.defaultView;
3780  var css = window.getComputedStyle(element, null);
3781  return property ? css[property] : css;
3782}
3783
3784/**
3785 * Returns the parentNode or the host of the element
3786 * @method
3787 * @memberof Popper.Utils
3788 * @argument {Element} element
3789 * @returns {Element} parent
3790 */
3791function getParentNode(element) {
3792  if (element.nodeName === 'HTML') {
3793    return element;
3794  }
3795  return element.parentNode || element.host;
3796}
3797
3798/**
3799 * Returns the scrolling parent of the given element
3800 * @method
3801 * @memberof Popper.Utils
3802 * @argument {Element} element
3803 * @returns {Element} scroll parent
3804 */
3805function getScrollParent(element) {
3806  // Return body, `getScroll` will take care to get the correct `scrollTop` from it
3807  if (!element) {
3808    return document.body;
3809  }
3810
3811  switch (element.nodeName) {
3812    case 'HTML':
3813    case 'BODY':
3814      return element.ownerDocument.body;
3815    case '#document':
3816      return element.body;
3817  }
3818
3819  // Firefox want us to check `-x` and `-y` variations as well
3820
3821  var _getStyleComputedProp = getStyleComputedProperty(element),
3822      overflow = _getStyleComputedProp.overflow,
3823      overflowX = _getStyleComputedProp.overflowX,
3824      overflowY = _getStyleComputedProp.overflowY;
3825
3826  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
3827    return element;
3828  }
3829
3830  return getScrollParent(getParentNode(element));
3831}
3832
3833/**
3834 * Returns the reference node of the reference object, or the reference object itself.
3835 * @method
3836 * @memberof Popper.Utils
3837 * @param {Element|Object} reference - the reference element (the popper will be relative to this)
3838 * @returns {Element} parent
3839 */
3840function getReferenceNode(reference) {
3841  return reference && reference.referenceNode ? reference.referenceNode : reference;
3842}
3843
3844var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
3845var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
3846
3847/**
3848 * Determines if the browser is Internet Explorer
3849 * @method
3850 * @memberof Popper.Utils
3851 * @param {Number} version to check
3852 * @returns {Boolean} isIE
3853 */
3854function isIE(version) {
3855  if (version === 11) {
3856    return isIE11;
3857  }
3858  if (version === 10) {
3859    return isIE10;
3860  }
3861  return isIE11 || isIE10;
3862}
3863
3864/**
3865 * Returns the offset parent of the given element
3866 * @method
3867 * @memberof Popper.Utils
3868 * @argument {Element} element
3869 * @returns {Element} offset parent
3870 */
3871function getOffsetParent(element) {
3872  if (!element) {
3873    return document.documentElement;
3874  }
3875
3876  var noOffsetParent = isIE(10) ? document.body : null;
3877
3878  // NOTE: 1 DOM access here
3879  var offsetParent = element.offsetParent || null;
3880  // Skip hidden elements which don't have an offsetParent
3881  while (offsetParent === noOffsetParent && element.nextElementSibling) {
3882    offsetParent = (element = element.nextElementSibling).offsetParent;
3883  }
3884
3885  var nodeName = offsetParent && offsetParent.nodeName;
3886
3887  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
3888    return element ? element.ownerDocument.documentElement : document.documentElement;
3889  }
3890
3891  // .offsetParent will return the closest TH, TD or TABLE in case
3892  // no offsetParent is present, I hate this job...
3893  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
3894    return getOffsetParent(offsetParent);
3895  }
3896
3897  return offsetParent;
3898}
3899
3900function isOffsetContainer(element) {
3901  var nodeName = element.nodeName;
3902
3903  if (nodeName === 'BODY') {
3904    return false;
3905  }
3906  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
3907}
3908
3909/**
3910 * Finds the root node (document, shadowDOM root) of the given element
3911 * @method
3912 * @memberof Popper.Utils
3913 * @argument {Element} node
3914 * @returns {Element} root node
3915 */
3916function getRoot(node) {
3917  if (node.parentNode !== null) {
3918    return getRoot(node.parentNode);
3919  }
3920
3921  return node;
3922}
3923
3924/**
3925 * Finds the offset parent common to the two provided nodes
3926 * @method
3927 * @memberof Popper.Utils
3928 * @argument {Element} element1
3929 * @argument {Element} element2
3930 * @returns {Element} common offset parent
3931 */
3932function findCommonOffsetParent(element1, element2) {
3933  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
3934  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
3935    return document.documentElement;
3936  }
3937
3938  // Here we make sure to give as "start" the element that comes first in the DOM
3939  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
3940  var start = order ? element1 : element2;
3941  var end = order ? element2 : element1;
3942
3943  // Get common ancestor container
3944  var range = document.createRange();
3945  range.setStart(start, 0);
3946  range.setEnd(end, 0);
3947  var commonAncestorContainer = range.commonAncestorContainer;
3948
3949  // Both nodes are inside #document
3950
3951  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
3952    if (isOffsetContainer(commonAncestorContainer)) {
3953      return commonAncestorContainer;
3954    }
3955
3956    return getOffsetParent(commonAncestorContainer);
3957  }
3958
3959  // one of the nodes is inside shadowDOM, find which one
3960  var element1root = getRoot(element1);
3961  if (element1root.host) {
3962    return findCommonOffsetParent(element1root.host, element2);
3963  } else {
3964    return findCommonOffsetParent(element1, getRoot(element2).host);
3965  }
3966}
3967
3968/**
3969 * Gets the scroll value of the given element in the given side (top and left)
3970 * @method
3971 * @memberof Popper.Utils
3972 * @argument {Element} element
3973 * @argument {String} side `top` or `left`
3974 * @returns {number} amount of scrolled pixels
3975 */
3976function getScroll(element) {
3977  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
3978
3979  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
3980  var nodeName = element.nodeName;
3981
3982  if (nodeName === 'BODY' || nodeName === 'HTML') {
3983    var html = element.ownerDocument.documentElement;
3984    var scrollingElement = element.ownerDocument.scrollingElement || html;
3985    return scrollingElement[upperSide];
3986  }
3987
3988  return element[upperSide];
3989}
3990
3991/*
3992 * Sum or subtract the element scroll values (left and top) from a given rect object
3993 * @method
3994 * @memberof Popper.Utils
3995 * @param {Object} rect - Rect object you want to change
3996 * @param {HTMLElement} element - The element from the function reads the scroll values
3997 * @param {Boolean} subtract - set to true if you want to subtract the scroll values
3998 * @return {Object} rect - The modifier rect object
3999 */
4000function includeScroll(rect, element) {
4001  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4002
4003  var scrollTop = getScroll(element, 'top');
4004  var scrollLeft = getScroll(element, 'left');
4005  var modifier = subtract ? -1 : 1;
4006  rect.top += scrollTop * modifier;
4007  rect.bottom += scrollTop * modifier;
4008  rect.left += scrollLeft * modifier;
4009  rect.right += scrollLeft * modifier;
4010  return rect;
4011}
4012
4013/*
4014 * Helper to detect borders of a given element
4015 * @method
4016 * @memberof Popper.Utils
4017 * @param {CSSStyleDeclaration} styles
4018 * Result of `getStyleComputedProperty` on the given element
4019 * @param {String} axis - `x` or `y`
4020 * @return {number} borders - The borders size of the given axis
4021 */
4022
4023function getBordersSize(styles, axis) {
4024  var sideA = axis === 'x' ? 'Left' : 'Top';
4025  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
4026
4027  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);
4028}
4029
4030function getSize(axis, body, html, computedStyle) {
4031  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);
4032}
4033
4034function getWindowSizes(document) {
4035  var body = document.body;
4036  var html = document.documentElement;
4037  var computedStyle = isIE(10) && getComputedStyle(html);
4038
4039  return {
4040    height: getSize('Height', body, html, computedStyle),
4041    width: getSize('Width', body, html, computedStyle)
4042  };
4043}
4044
4045var classCallCheck = function (instance, Constructor) {
4046  if (!(instance instanceof Constructor)) {
4047    throw new TypeError("Cannot call a class as a function");
4048  }
4049};
4050
4051var createClass = function () {
4052  function defineProperties(target, props) {
4053    for (var i = 0; i < props.length; i++) {
4054      var descriptor = props[i];
4055      descriptor.enumerable = descriptor.enumerable || false;
4056      descriptor.configurable = true;
4057      if ("value" in descriptor) descriptor.writable = true;
4058      Object.defineProperty(target, descriptor.key, descriptor);
4059    }
4060  }
4061
4062  return function (Constructor, protoProps, staticProps) {
4063    if (protoProps) defineProperties(Constructor.prototype, protoProps);
4064    if (staticProps) defineProperties(Constructor, staticProps);
4065    return Constructor;
4066  };
4067}();
4068
4069
4070
4071
4072
4073var defineProperty = function (obj, key, value) {
4074  if (key in obj) {
4075    Object.defineProperty(obj, key, {
4076      value: value,
4077      enumerable: true,
4078      configurable: true,
4079      writable: true
4080    });
4081  } else {
4082    obj[key] = value;
4083  }
4084
4085  return obj;
4086};
4087
4088var _extends = Object.assign || function (target) {
4089  for (var i = 1; i < arguments.length; i++) {
4090    var source = arguments[i];
4091
4092    for (var key in source) {
4093      if (Object.prototype.hasOwnProperty.call(source, key)) {
4094        target[key] = source[key];
4095      }
4096    }
4097  }
4098
4099  return target;
4100};
4101
4102/**
4103 * Given element offsets, generate an output similar to getBoundingClientRect
4104 * @method
4105 * @memberof Popper.Utils
4106 * @argument {Object} offsets
4107 * @returns {Object} ClientRect like output
4108 */
4109function getClientRect(offsets) {
4110  return _extends({}, offsets, {
4111    right: offsets.left + offsets.width,
4112    bottom: offsets.top + offsets.height
4113  });
4114}
4115
4116/**
4117 * Get bounding client rect of given element
4118 * @method
4119 * @memberof Popper.Utils
4120 * @param {HTMLElement} element
4121 * @return {Object} client rect
4122 */
4123function getBoundingClientRect(element) {
4124  var rect = {};
4125
4126  // IE10 10 FIX: Please, don't ask, the element isn't
4127  // considered in DOM in some circumstances...
4128  // This isn't reproducible in IE10 compatibility mode of IE11
4129  try {
4130    if (isIE(10)) {
4131      rect = element.getBoundingClientRect();
4132      var scrollTop = getScroll(element, 'top');
4133      var scrollLeft = getScroll(element, 'left');
4134      rect.top += scrollTop;
4135      rect.left += scrollLeft;
4136      rect.bottom += scrollTop;
4137      rect.right += scrollLeft;
4138    } else {
4139      rect = element.getBoundingClientRect();
4140    }
4141  } catch (e) {}
4142
4143  var result = {
4144    left: rect.left,
4145    top: rect.top,
4146    width: rect.right - rect.left,
4147    height: rect.bottom - rect.top
4148  };
4149
4150  // subtract scrollbar size from sizes
4151  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
4152  var width = sizes.width || element.clientWidth || result.width;
4153  var height = sizes.height || element.clientHeight || result.height;
4154
4155  var horizScrollbar = element.offsetWidth - width;
4156  var vertScrollbar = element.offsetHeight - height;
4157
4158  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
4159  // we make this check conditional for performance reasons
4160  if (horizScrollbar || vertScrollbar) {
4161    var styles = getStyleComputedProperty(element);
4162    horizScrollbar -= getBordersSize(styles, 'x');
4163    vertScrollbar -= getBordersSize(styles, 'y');
4164
4165    result.width -= horizScrollbar;
4166    result.height -= vertScrollbar;
4167  }
4168
4169  return getClientRect(result);
4170}
4171
4172function getOffsetRectRelativeToArbitraryNode(children, parent) {
4173  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4174
4175  var isIE10 = isIE(10);
4176  var isHTML = parent.nodeName === 'HTML';
4177  var childrenRect = getBoundingClientRect(children);
4178  var parentRect = getBoundingClientRect(parent);
4179  var scrollParent = getScrollParent(children);
4180
4181  var styles = getStyleComputedProperty(parent);
4182  var borderTopWidth = parseFloat(styles.borderTopWidth);
4183  var borderLeftWidth = parseFloat(styles.borderLeftWidth);
4184
4185  // In cases where the parent is fixed, we must ignore negative scroll in offset calc
4186  if (fixedPosition && isHTML) {
4187    parentRect.top = Math.max(parentRect.top, 0);
4188    parentRect.left = Math.max(parentRect.left, 0);
4189  }
4190  var offsets = getClientRect({
4191    top: childrenRect.top - parentRect.top - borderTopWidth,
4192    left: childrenRect.left - parentRect.left - borderLeftWidth,
4193    width: childrenRect.width,
4194    height: childrenRect.height
4195  });
4196  offsets.marginTop = 0;
4197  offsets.marginLeft = 0;
4198
4199  // Subtract margins of documentElement in case it's being used as parent
4200  // we do this only on HTML because it's the only element that behaves
4201  // differently when margins are applied to it. The margins are included in
4202  // the box of the documentElement, in the other cases not.
4203  if (!isIE10 && isHTML) {
4204    var marginTop = parseFloat(styles.marginTop);
4205    var marginLeft = parseFloat(styles.marginLeft);
4206
4207    offsets.top -= borderTopWidth - marginTop;
4208    offsets.bottom -= borderTopWidth - marginTop;
4209    offsets.left -= borderLeftWidth - marginLeft;
4210    offsets.right -= borderLeftWidth - marginLeft;
4211
4212    // Attach marginTop and marginLeft because in some circumstances we may need them
4213    offsets.marginTop = marginTop;
4214    offsets.marginLeft = marginLeft;
4215  }
4216
4217  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
4218    offsets = includeScroll(offsets, parent);
4219  }
4220
4221  return offsets;
4222}
4223
4224function getViewportOffsetRectRelativeToArtbitraryNode(element) {
4225  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4226
4227  var html = element.ownerDocument.documentElement;
4228  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
4229  var width = Math.max(html.clientWidth, window.innerWidth || 0);
4230  var height = Math.max(html.clientHeight, window.innerHeight || 0);
4231
4232  var scrollTop = !excludeScroll ? getScroll(html) : 0;
4233  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;
4234
4235  var offset = {
4236    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
4237    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
4238    width: width,
4239    height: height
4240  };
4241
4242  return getClientRect(offset);
4243}
4244
4245/**
4246 * Check if the given element is fixed or is inside a fixed parent
4247 * @method
4248 * @memberof Popper.Utils
4249 * @argument {Element} element
4250 * @argument {Element} customContainer
4251 * @returns {Boolean} answer to "isFixed?"
4252 */
4253function isFixed(element) {
4254  var nodeName = element.nodeName;
4255  if (nodeName === 'BODY' || nodeName === 'HTML') {
4256    return false;
4257  }
4258  if (getStyleComputedProperty(element, 'position') === 'fixed') {
4259    return true;
4260  }
4261  var parentNode = getParentNode(element);
4262  if (!parentNode) {
4263    return false;
4264  }
4265  return isFixed(parentNode);
4266}
4267
4268/**
4269 * Finds the first parent of an element that has a transformed property defined
4270 * @method
4271 * @memberof Popper.Utils
4272 * @argument {Element} element
4273 * @returns {Element} first transformed parent or documentElement
4274 */
4275
4276function getFixedPositionOffsetParent(element) {
4277  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
4278  if (!element || !element.parentElement || isIE()) {
4279    return document.documentElement;
4280  }
4281  var el = element.parentElement;
4282  while (el && getStyleComputedProperty(el, 'transform') === 'none') {
4283    el = el.parentElement;
4284  }
4285  return el || document.documentElement;
4286}
4287
4288/**
4289 * Computed the boundaries limits and return them
4290 * @method
4291 * @memberof Popper.Utils
4292 * @param {HTMLElement} popper
4293 * @param {HTMLElement} reference
4294 * @param {number} padding
4295 * @param {HTMLElement} boundariesElement - Element used to define the boundaries
4296 * @param {Boolean} fixedPosition - Is in fixed position mode
4297 * @returns {Object} Coordinates of the boundaries
4298 */
4299function getBoundaries(popper, reference, padding, boundariesElement) {
4300  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
4301
4302  // NOTE: 1 DOM access here
4303
4304  var boundaries = { top: 0, left: 0 };
4305  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
4306
4307  // Handle viewport case
4308  if (boundariesElement === 'viewport') {
4309    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
4310  } else {
4311    // Handle other cases based on DOM element used as boundaries
4312    var boundariesNode = void 0;
4313    if (boundariesElement === 'scrollParent') {
4314      boundariesNode = getScrollParent(getParentNode(reference));
4315      if (boundariesNode.nodeName === 'BODY') {
4316        boundariesNode = popper.ownerDocument.documentElement;
4317      }
4318    } else if (boundariesElement === 'window') {
4319      boundariesNode = popper.ownerDocument.documentElement;
4320    } else {
4321      boundariesNode = boundariesElement;
4322    }
4323
4324    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);
4325
4326    // In case of HTML, we need a different computation
4327    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
4328      var _getWindowSizes = getWindowSizes(popper.ownerDocument),
4329          height = _getWindowSizes.height,
4330          width = _getWindowSizes.width;
4331
4332      boundaries.top += offsets.top - offsets.marginTop;
4333      boundaries.bottom = height + offsets.top;
4334      boundaries.left += offsets.left - offsets.marginLeft;
4335      boundaries.right = width + offsets.left;
4336    } else {
4337      // for all the other DOM elements, this one is good
4338      boundaries = offsets;
4339    }
4340  }
4341
4342  // Add paddings
4343  padding = padding || 0;
4344  var isPaddingNumber = typeof padding === 'number';
4345  boundaries.left += isPaddingNumber ? padding : padding.left || 0;
4346  boundaries.top += isPaddingNumber ? padding : padding.top || 0;
4347  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
4348  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
4349
4350  return boundaries;
4351}
4352
4353function getArea(_ref) {
4354  var width = _ref.width,
4355      height = _ref.height;
4356
4357  return width * height;
4358}
4359
4360/**
4361 * Utility used to transform the `auto` placement to the placement with more
4362 * available space.
4363 * @method
4364 * @memberof Popper.Utils
4365 * @argument {Object} data - The data object generated by update method
4366 * @argument {Object} options - Modifiers configuration and options
4367 * @returns {Object} The data object, properly modified
4368 */
4369function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
4370  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
4371
4372  if (placement.indexOf('auto') === -1) {
4373    return placement;
4374  }
4375
4376  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
4377
4378  var rects = {
4379    top: {
4380      width: boundaries.width,
4381      height: refRect.top - boundaries.top
4382    },
4383    right: {
4384      width: boundaries.right - refRect.right,
4385      height: boundaries.height
4386    },
4387    bottom: {
4388      width: boundaries.width,
4389      height: boundaries.bottom - refRect.bottom
4390    },
4391    left: {
4392      width: refRect.left - boundaries.left,
4393      height: boundaries.height
4394    }
4395  };
4396
4397  var sortedAreas = Object.keys(rects).map(function (key) {
4398    return _extends({
4399      key: key
4400    }, rects[key], {
4401      area: getArea(rects[key])
4402    });
4403  }).sort(function (a, b) {
4404    return b.area - a.area;
4405  });
4406
4407  var filteredAreas = sortedAreas.filter(function (_ref2) {
4408    var width = _ref2.width,
4409        height = _ref2.height;
4410    return width >= popper.clientWidth && height >= popper.clientHeight;
4411  });
4412
4413  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
4414
4415  var variation = placement.split('-')[1];
4416
4417  return computedPlacement + (variation ? '-' + variation : '');
4418}
4419
4420/**
4421 * Get offsets to the reference element
4422 * @method
4423 * @memberof Popper.Utils
4424 * @param {Object} state
4425 * @param {Element} popper - the popper element
4426 * @param {Element} reference - the reference element (the popper will be relative to this)
4427 * @param {Element} fixedPosition - is in fixed position mode
4428 * @returns {Object} An object containing the offsets which will be applied to the popper
4429 */
4430function getReferenceOffsets(state, popper, reference) {
4431  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
4432
4433  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
4434  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
4435}
4436
4437/**
4438 * Get the outer sizes of the given element (offset size + margins)
4439 * @method
4440 * @memberof Popper.Utils
4441 * @argument {Element} element
4442 * @returns {Object} object containing width and height properties
4443 */
4444function getOuterSizes(element) {
4445  var window = element.ownerDocument.defaultView;
4446  var styles = window.getComputedStyle(element);
4447  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
4448  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
4449  var result = {
4450    width: element.offsetWidth + y,
4451    height: element.offsetHeight + x
4452  };
4453  return result;
4454}
4455
4456/**
4457 * Get the opposite placement of the given one
4458 * @method
4459 * @memberof Popper.Utils
4460 * @argument {String} placement
4461 * @returns {String} flipped placement
4462 */
4463function getOppositePlacement(placement) {
4464  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
4465  return placement.replace(/left|right|bottom|top/g, function (matched) {
4466    return hash[matched];
4467  });
4468}
4469
4470/**
4471 * Get offsets to the popper
4472 * @method
4473 * @memberof Popper.Utils
4474 * @param {Object} position - CSS position the Popper will get applied
4475 * @param {HTMLElement} popper - the popper element
4476 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
4477 * @param {String} placement - one of the valid placement options
4478 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
4479 */
4480function getPopperOffsets(popper, referenceOffsets, placement) {
4481  placement = placement.split('-')[0];
4482
4483  // Get popper node sizes
4484  var popperRect = getOuterSizes(popper);
4485
4486  // Add position, width and height to our offsets object
4487  var popperOffsets = {
4488    width: popperRect.width,
4489    height: popperRect.height
4490  };
4491
4492  // depending by the popper placement we have to compute its offsets slightly differently
4493  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
4494  var mainSide = isHoriz ? 'top' : 'left';
4495  var secondarySide = isHoriz ? 'left' : 'top';
4496  var measurement = isHoriz ? 'height' : 'width';
4497  var secondaryMeasurement = !isHoriz ? 'height' : 'width';
4498
4499  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
4500  if (placement === secondarySide) {
4501    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
4502  } else {
4503    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
4504  }
4505
4506  return popperOffsets;
4507}
4508
4509/**
4510 * Mimics the `find` method of Array
4511 * @method
4512 * @memberof Popper.Utils
4513 * @argument {Array} arr
4514 * @argument prop
4515 * @argument value
4516 * @returns index or -1
4517 */
4518function find(arr, check) {
4519  // use native find if supported
4520  if (Array.prototype.find) {
4521    return arr.find(check);
4522  }
4523
4524  // use `filter` to obtain the same behavior of `find`
4525  return arr.filter(check)[0];
4526}
4527
4528/**
4529 * Return the index of the matching object
4530 * @method
4531 * @memberof Popper.Utils
4532 * @argument {Array} arr
4533 * @argument prop
4534 * @argument value
4535 * @returns index or -1
4536 */
4537function findIndex(arr, prop, value) {
4538  // use native findIndex if supported
4539  if (Array.prototype.findIndex) {
4540    return arr.findIndex(function (cur) {
4541      return cur[prop] === value;
4542    });
4543  }
4544
4545  // use `find` + `indexOf` if `findIndex` isn't supported
4546  var match = find(arr, function (obj) {
4547    return obj[prop] === value;
4548  });
4549  return arr.indexOf(match);
4550}
4551
4552/**
4553 * Loop trough the list of modifiers and run them in order,
4554 * each of them will then edit the data object.
4555 * @method
4556 * @memberof Popper.Utils
4557 * @param {dataObject} data
4558 * @param {Array} modifiers
4559 * @param {String} ends - Optional modifier name used as stopper
4560 * @returns {dataObject}
4561 */
4562function runModifiers(modifiers, data, ends) {
4563  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
4564
4565  modifiersToRun.forEach(function (modifier) {
4566    if (modifier['function']) {
4567      // eslint-disable-line dot-notation
4568      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
4569    }
4570    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
4571    if (modifier.enabled && isFunction(fn)) {
4572      // Add properties to offsets to make them a complete clientRect object
4573      // we do this before each modifier to make sure the previous one doesn't
4574      // mess with these values
4575      data.offsets.popper = getClientRect(data.offsets.popper);
4576      data.offsets.reference = getClientRect(data.offsets.reference);
4577
4578      data = fn(data, modifier);
4579    }
4580  });
4581
4582  return data;
4583}
4584
4585/**
4586 * Updates the position of the popper, computing the new offsets and applying
4587 * the new style.<br />
4588 * Prefer `scheduleUpdate` over `update` because of performance reasons.
4589 * @method
4590 * @memberof Popper
4591 */
4592function update() {
4593  // if popper is destroyed, don't perform any further update
4594  if (this.state.isDestroyed) {
4595    return;
4596  }
4597
4598  var data = {
4599    instance: this,
4600    styles: {},
4601    arrowStyles: {},
4602    attributes: {},
4603    flipped: false,
4604    offsets: {}
4605  };
4606
4607  // compute reference element offsets
4608  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);
4609
4610  // compute auto placement, store placement inside the data object,
4611  // modifiers will be able to edit `placement` if needed
4612  // and refer to originalPlacement to know the original value
4613  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
4614
4615  // store the computed placement inside `originalPlacement`
4616  data.originalPlacement = data.placement;
4617
4618  data.positionFixed = this.options.positionFixed;
4619
4620  // compute the popper offsets
4621  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
4622
4623  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';
4624
4625  // run the modifiers
4626  data = runModifiers(this.modifiers, data);
4627
4628  // the first `update` will call `onCreate` callback
4629  // the other ones will call `onUpdate` callback
4630  if (!this.state.isCreated) {
4631    this.state.isCreated = true;
4632    this.options.onCreate(data);
4633  } else {
4634    this.options.onUpdate(data);
4635  }
4636}
4637
4638/**
4639 * Helper used to know if the given modifier is enabled.
4640 * @method
4641 * @memberof Popper.Utils
4642 * @returns {Boolean}
4643 */
4644function isModifierEnabled(modifiers, modifierName) {
4645  return modifiers.some(function (_ref) {
4646    var name = _ref.name,
4647        enabled = _ref.enabled;
4648    return enabled && name === modifierName;
4649  });
4650}
4651
4652/**
4653 * Get the prefixed supported property name
4654 * @method
4655 * @memberof Popper.Utils
4656 * @argument {String} property (camelCase)
4657 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
4658 */
4659function getSupportedPropertyName(property) {
4660  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
4661  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
4662
4663  for (var i = 0; i < prefixes.length; i++) {
4664    var prefix = prefixes[i];
4665    var toCheck = prefix ? '' + prefix + upperProp : property;
4666    if (typeof document.body.style[toCheck] !== 'undefined') {
4667      return toCheck;
4668    }
4669  }
4670  return null;
4671}
4672
4673/**
4674 * Destroys the popper.
4675 * @method
4676 * @memberof Popper
4677 */
4678function destroy() {
4679  this.state.isDestroyed = true;
4680
4681  // touch DOM only if `applyStyle` modifier is enabled
4682  if (isModifierEnabled(this.modifiers, 'applyStyle')) {
4683    this.popper.removeAttribute('x-placement');
4684    this.popper.style.position = '';
4685    this.popper.style.top = '';
4686    this.popper.style.left = '';
4687    this.popper.style.right = '';
4688    this.popper.style.bottom = '';
4689    this.popper.style.willChange = '';
4690    this.popper.style[getSupportedPropertyName('transform')] = '';
4691  }
4692
4693  this.disableEventListeners();
4694
4695  // remove the popper if user explicitly asked for the deletion on destroy
4696  // do not use `remove` because IE11 doesn't support it
4697  if (this.options.removeOnDestroy) {
4698    this.popper.parentNode.removeChild(this.popper);
4699  }
4700  return this;
4701}
4702
4703/**
4704 * Get the window associated with the element
4705 * @argument {Element} element
4706 * @returns {Window}
4707 */
4708function getWindow(element) {
4709  var ownerDocument = element.ownerDocument;
4710  return ownerDocument ? ownerDocument.defaultView : window;
4711}
4712
4713function attachToScrollParents(scrollParent, event, callback, scrollParents) {
4714  var isBody = scrollParent.nodeName === 'BODY';
4715  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
4716  target.addEventListener(event, callback, { passive: true });
4717
4718  if (!isBody) {
4719    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
4720  }
4721  scrollParents.push(target);
4722}
4723
4724/**
4725 * Setup needed event listeners used to update the popper position
4726 * @method
4727 * @memberof Popper.Utils
4728 * @private
4729 */
4730function setupEventListeners(reference, options, state, updateBound) {
4731  // Resize event listener on window
4732  state.updateBound = updateBound;
4733  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });
4734
4735  // Scroll event listener on scroll parents
4736  var scrollElement = getScrollParent(reference);
4737  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
4738  state.scrollElement = scrollElement;
4739  state.eventsEnabled = true;
4740
4741  return state;
4742}
4743
4744/**
4745 * It will add resize/scroll events and start recalculating
4746 * position of the popper element when they are triggered.
4747 * @method
4748 * @memberof Popper
4749 */
4750function enableEventListeners() {
4751  if (!this.state.eventsEnabled) {
4752    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
4753  }
4754}
4755
4756/**
4757 * Remove event listeners used to update the popper position
4758 * @method
4759 * @memberof Popper.Utils
4760 * @private
4761 */
4762function removeEventListeners(reference, state) {
4763  // Remove resize event listener on window
4764  getWindow(reference).removeEventListener('resize', state.updateBound);
4765
4766  // Remove scroll event listener on scroll parents
4767  state.scrollParents.forEach(function (target) {
4768    target.removeEventListener('scroll', state.updateBound);
4769  });
4770
4771  // Reset state
4772  state.updateBound = null;
4773  state.scrollParents = [];
4774  state.scrollElement = null;
4775  state.eventsEnabled = false;
4776  return state;
4777}
4778
4779/**
4780 * It will remove resize/scroll events and won't recalculate popper position
4781 * when they are triggered. It also won't trigger `onUpdate` callback anymore,
4782 * unless you call `update` method manually.
4783 * @method
4784 * @memberof Popper
4785 */
4786function disableEventListeners() {
4787  if (this.state.eventsEnabled) {
4788    cancelAnimationFrame(this.scheduleUpdate);
4789    this.state = removeEventListeners(this.reference, this.state);
4790  }
4791}
4792
4793/**
4794 * Tells if a given input is a number
4795 * @method
4796 * @memberof Popper.Utils
4797 * @param {*} input to check
4798 * @return {Boolean}
4799 */
4800function isNumeric(n) {
4801  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
4802}
4803
4804/**
4805 * Set the style to the given popper
4806 * @method
4807 * @memberof Popper.Utils
4808 * @argument {Element} element - Element to apply the style to
4809 * @argument {Object} styles
4810 * Object with a list of properties and values which will be applied to the element
4811 */
4812function setStyles(element, styles) {
4813  Object.keys(styles).forEach(function (prop) {
4814    var unit = '';
4815    // add unit if the value is numeric and is one of the following
4816    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
4817      unit = 'px';
4818    }
4819    element.style[prop] = styles[prop] + unit;
4820  });
4821}
4822
4823/**
4824 * Set the attributes to the given popper
4825 * @method
4826 * @memberof Popper.Utils
4827 * @argument {Element} element - Element to apply the attributes to
4828 * @argument {Object} styles
4829 * Object with a list of properties and values which will be applied to the element
4830 */
4831function setAttributes(element, attributes) {
4832  Object.keys(attributes).forEach(function (prop) {
4833    var value = attributes[prop];
4834    if (value !== false) {
4835      element.setAttribute(prop, attributes[prop]);
4836    } else {
4837      element.removeAttribute(prop);
4838    }
4839  });
4840}
4841
4842/**
4843 * @function
4844 * @memberof Modifiers
4845 * @argument {Object} data - The data object generated by `update` method
4846 * @argument {Object} data.styles - List of style properties - values to apply to popper element
4847 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
4848 * @argument {Object} options - Modifiers configuration and options
4849 * @returns {Object} The same data object
4850 */
4851function applyStyle(data) {
4852  // any property present in `data.styles` will be applied to the popper,
4853  // in this way we can make the 3rd party modifiers add custom styles to it
4854  // Be aware, modifiers could override the properties defined in the previous
4855  // lines of this modifier!
4856  setStyles(data.instance.popper, data.styles);
4857
4858  // any property present in `data.attributes` will be applied to the popper,
4859  // they will be set as HTML attributes of the element
4860  setAttributes(data.instance.popper, data.attributes);
4861
4862  // if arrowElement is defined and arrowStyles has some properties
4863  if (data.arrowElement && Object.keys(data.arrowStyles).length) {
4864    setStyles(data.arrowElement, data.arrowStyles);
4865  }
4866
4867  return data;
4868}
4869
4870/**
4871 * Set the x-placement attribute before everything else because it could be used
4872 * to add margins to the popper margins needs to be calculated to get the
4873 * correct popper offsets.
4874 * @method
4875 * @memberof Popper.modifiers
4876 * @param {HTMLElement} reference - The reference element used to position the popper
4877 * @param {HTMLElement} popper - The HTML element used as popper
4878 * @param {Object} options - Popper.js options
4879 */
4880function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
4881  // compute reference element offsets
4882  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
4883
4884  // compute auto placement, store placement inside the data object,
4885  // modifiers will be able to edit `placement` if needed
4886  // and refer to originalPlacement to know the original value
4887  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
4888
4889  popper.setAttribute('x-placement', placement);
4890
4891  // Apply `position` to popper before anything else because
4892  // without the position applied we can't guarantee correct computations
4893  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });
4894
4895  return options;
4896}
4897
4898/**
4899 * @function
4900 * @memberof Popper.Utils
4901 * @argument {Object} data - The data object generated by `update` method
4902 * @argument {Boolean} shouldRound - If the offsets should be rounded at all
4903 * @returns {Object} The popper's position offsets rounded
4904 *
4905 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as
4906 * good as it can be within reason.
4907 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715
4908 *
4909 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari
4910 * as well on High DPI screens).
4911 *
4912 * Firefox prefers no rounding for positioning and does not have blurriness on
4913 * high DPI screens.
4914 *
4915 * Only horizontal placement and left/right values need to be considered.
4916 */
4917function getRoundedOffsets(data, shouldRound) {
4918  var _data$offsets = data.offsets,
4919      popper = _data$offsets.popper,
4920      reference = _data$offsets.reference;
4921  var round = Math.round,
4922      floor = Math.floor;
4923
4924  var noRound = function noRound(v) {
4925    return v;
4926  };
4927
4928  var referenceWidth = round(reference.width);
4929  var popperWidth = round(popper.width);
4930
4931  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
4932  var isVariation = data.placement.indexOf('-') !== -1;
4933  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
4934  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
4935
4936  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
4937  var verticalToInteger = !shouldRound ? noRound : round;
4938
4939  return {
4940    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
4941    top: verticalToInteger(popper.top),
4942    bottom: verticalToInteger(popper.bottom),
4943    right: horizontalToInteger(popper.right)
4944  };
4945}
4946
4947var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
4948
4949/**
4950 * @function
4951 * @memberof Modifiers
4952 * @argument {Object} data - The data object generated by `update` method
4953 * @argument {Object} options - Modifiers configuration and options
4954 * @returns {Object} The data object, properly modified
4955 */
4956function computeStyle(data, options) {
4957  var x = options.x,
4958      y = options.y;
4959  var popper = data.offsets.popper;
4960
4961  // Remove this legacy support in Popper.js v2
4962
4963  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
4964    return modifier.name === 'applyStyle';
4965  }).gpuAcceleration;
4966  if (legacyGpuAccelerationOption !== undefined) {
4967    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
4968  }
4969  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
4970
4971  var offsetParent = getOffsetParent(data.instance.popper);
4972  var offsetParentRect = getBoundingClientRect(offsetParent);
4973
4974  // Styles
4975  var styles = {
4976    position: popper.position
4977  };
4978
4979  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
4980
4981  var sideA = x === 'bottom' ? 'top' : 'bottom';
4982  var sideB = y === 'right' ? 'left' : 'right';
4983
4984  // if gpuAcceleration is set to `true` and transform is supported,
4985  //  we use `translate3d` to apply the position to the popper we
4986  // automatically use the supported prefixed version if needed
4987  var prefixedProperty = getSupportedPropertyName('transform');
4988
4989  // now, let's make a step back and look at this code closely (wtf?)
4990  // If the content of the popper grows once it's been positioned, it
4991  // may happen that the popper gets misplaced because of the new content
4992  // overflowing its reference element
4993  // To avoid this problem, we provide two options (x and y), which allow
4994  // the consumer to define the offset origin.
4995  // If we position a popper on top of a reference element, we can set
4996  // `x` to `top` to make the popper grow towards its top instead of
4997  // its bottom.
4998  var left = void 0,
4999      top = void 0;
5000  if (sideA === 'bottom') {
5001    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
5002    // and not the bottom of the html element
5003    if (offsetParent.nodeName === 'HTML') {
5004      top = -offsetParent.clientHeight + offsets.bottom;
5005    } else {
5006      top = -offsetParentRect.height + offsets.bottom;
5007    }
5008  } else {
5009    top = offsets.top;
5010  }
5011  if (sideB === 'right') {
5012    if (offsetParent.nodeName === 'HTML') {
5013      left = -offsetParent.clientWidth + offsets.right;
5014    } else {
5015      left = -offsetParentRect.width + offsets.right;
5016    }
5017  } else {
5018    left = offsets.left;
5019  }
5020  if (gpuAcceleration && prefixedProperty) {
5021    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
5022    styles[sideA] = 0;
5023    styles[sideB] = 0;
5024    styles.willChange = 'transform';
5025  } else {
5026    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
5027    var invertTop = sideA === 'bottom' ? -1 : 1;
5028    var invertLeft = sideB === 'right' ? -1 : 1;
5029    styles[sideA] = top * invertTop;
5030    styles[sideB] = left * invertLeft;
5031    styles.willChange = sideA + ', ' + sideB;
5032  }
5033
5034  // Attributes
5035  var attributes = {
5036    'x-placement': data.placement
5037  };
5038
5039  // Update `data` attributes, styles and arrowStyles
5040  data.attributes = _extends({}, attributes, data.attributes);
5041  data.styles = _extends({}, styles, data.styles);
5042  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
5043
5044  return data;
5045}
5046
5047/**
5048 * Helper used to know if the given modifier depends from another one.<br />
5049 * It checks if the needed modifier is listed and enabled.
5050 * @method
5051 * @memberof Popper.Utils
5052 * @param {Array} modifiers - list of modifiers
5053 * @param {String} requestingName - name of requesting modifier
5054 * @param {String} requestedName - name of requested modifier
5055 * @returns {Boolean}
5056 */
5057function isModifierRequired(modifiers, requestingName, requestedName) {
5058  var requesting = find(modifiers, function (_ref) {
5059    var name = _ref.name;
5060    return name === requestingName;
5061  });
5062
5063  var isRequired = !!requesting && modifiers.some(function (modifier) {
5064    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
5065  });
5066
5067  if (!isRequired) {
5068    var _requesting = '`' + requestingName + '`';
5069    var requested = '`' + requestedName + '`';
5070    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
5071  }
5072  return isRequired;
5073}
5074
5075/**
5076 * @function
5077 * @memberof Modifiers
5078 * @argument {Object} data - The data object generated by update method
5079 * @argument {Object} options - Modifiers configuration and options
5080 * @returns {Object} The data object, properly modified
5081 */
5082function arrow(data, options) {
5083  var _data$offsets$arrow;
5084
5085  // arrow depends on keepTogether in order to work
5086  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
5087    return data;
5088  }
5089
5090  var arrowElement = options.element;
5091
5092  // if arrowElement is a string, suppose it's a CSS selector
5093  if (typeof arrowElement === 'string') {
5094    arrowElement = data.instance.popper.querySelector(arrowElement);
5095
5096    // if arrowElement is not found, don't run the modifier
5097    if (!arrowElement) {
5098      return data;
5099    }
5100  } else {
5101    // if the arrowElement isn't a query selector we must check that the
5102    // provided DOM node is child of its popper node
5103    if (!data.instance.popper.contains(arrowElement)) {
5104      console.warn('WARNING: `arrow.element` must be child of its popper element!');
5105      return data;
5106    }
5107  }
5108
5109  var placement = data.placement.split('-')[0];
5110  var _data$offsets = data.offsets,
5111      popper = _data$offsets.popper,
5112      reference = _data$offsets.reference;
5113
5114  var isVertical = ['left', 'right'].indexOf(placement) !== -1;
5115
5116  var len = isVertical ? 'height' : 'width';
5117  var sideCapitalized = isVertical ? 'Top' : 'Left';
5118  var side = sideCapitalized.toLowerCase();
5119  var altSide = isVertical ? 'left' : 'top';
5120  var opSide = isVertical ? 'bottom' : 'right';
5121  var arrowElementSize = getOuterSizes(arrowElement)[len];
5122
5123  //
5124  // extends keepTogether behavior making sure the popper and its
5125  // reference have enough pixels in conjunction
5126  //
5127
5128  // top/left side
5129  if (reference[opSide] - arrowElementSize < popper[side]) {
5130    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
5131  }
5132  // bottom/right side
5133  if (reference[side] + arrowElementSize > popper[opSide]) {
5134    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
5135  }
5136  data.offsets.popper = getClientRect(data.offsets.popper);
5137
5138  // compute center of the popper
5139  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
5140
5141  // Compute the sideValue using the updated popper offsets
5142  // take popper margin in account because we don't have this info available
5143  var css = getStyleComputedProperty(data.instance.popper);
5144  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);
5145  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);
5146  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
5147
5148  // prevent arrowElement from being placed not contiguously to its popper
5149  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
5150
5151  data.arrowElement = arrowElement;
5152  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
5153
5154  return data;
5155}
5156
5157/**
5158 * Get the opposite placement variation of the given one
5159 * @method
5160 * @memberof Popper.Utils
5161 * @argument {String} placement variation
5162 * @returns {String} flipped placement variation
5163 */
5164function getOppositeVariation(variation) {
5165  if (variation === 'end') {
5166    return 'start';
5167  } else if (variation === 'start') {
5168    return 'end';
5169  }
5170  return variation;
5171}
5172
5173/**
5174 * List of accepted placements to use as values of the `placement` option.<br />
5175 * Valid placements are:
5176 * - `auto`
5177 * - `top`
5178 * - `right`
5179 * - `bottom`
5180 * - `left`
5181 *
5182 * Each placement can have a variation from this list:
5183 * - `-start`
5184 * - `-end`
5185 *
5186 * Variations are interpreted easily if you think of them as the left to right
5187 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
5188 * is right.<br />
5189 * Vertically (`left` and `right`), `start` is top and `end` is bottom.
5190 *
5191 * Some valid examples are:
5192 * - `top-end` (on top of reference, right aligned)
5193 * - `right-start` (on right of reference, top aligned)
5194 * - `bottom` (on bottom, centered)
5195 * - `auto-end` (on the side with more space available, alignment depends by placement)
5196 *
5197 * @static
5198 * @type {Array}
5199 * @enum {String}
5200 * @readonly
5201 * @method placements
5202 * @memberof Popper
5203 */
5204var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
5205
5206// Get rid of `auto` `auto-start` and `auto-end`
5207var validPlacements = placements.slice(3);
5208
5209/**
5210 * Given an initial placement, returns all the subsequent placements
5211 * clockwise (or counter-clockwise).
5212 *
5213 * @method
5214 * @memberof Popper.Utils
5215 * @argument {String} placement - A valid placement (it accepts variations)
5216 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
5217 * @returns {Array} placements including their variations
5218 */
5219function clockwise(placement) {
5220  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5221
5222  var index = validPlacements.indexOf(placement);
5223  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
5224  return counter ? arr.reverse() : arr;
5225}
5226
5227var BEHAVIORS = {
5228  FLIP: 'flip',
5229  CLOCKWISE: 'clockwise',
5230  COUNTERCLOCKWISE: 'counterclockwise'
5231};
5232
5233/**
5234 * @function
5235 * @memberof Modifiers
5236 * @argument {Object} data - The data object generated by update method
5237 * @argument {Object} options - Modifiers configuration and options
5238 * @returns {Object} The data object, properly modified
5239 */
5240function flip(data, options) {
5241  // if `inner` modifier is enabled, we can't use the `flip` modifier
5242  if (isModifierEnabled(data.instance.modifiers, 'inner')) {
5243    return data;
5244  }
5245
5246  if (data.flipped && data.placement === data.originalPlacement) {
5247    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
5248    return data;
5249  }
5250
5251  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
5252
5253  var placement = data.placement.split('-')[0];
5254  var placementOpposite = getOppositePlacement(placement);
5255  var variation = data.placement.split('-')[1] || '';
5256
5257  var flipOrder = [];
5258
5259  switch (options.behavior) {
5260    case BEHAVIORS.FLIP:
5261      flipOrder = [placement, placementOpposite];
5262      break;
5263    case BEHAVIORS.CLOCKWISE:
5264      flipOrder = clockwise(placement);
5265      break;
5266    case BEHAVIORS.COUNTERCLOCKWISE:
5267      flipOrder = clockwise(placement, true);
5268      break;
5269    default:
5270      flipOrder = options.behavior;
5271  }
5272
5273  flipOrder.forEach(function (step, index) {
5274    if (placement !== step || flipOrder.length === index + 1) {
5275      return data;
5276    }
5277
5278    placement = data.placement.split('-')[0];
5279    placementOpposite = getOppositePlacement(placement);
5280
5281    var popperOffsets = data.offsets.popper;
5282    var refOffsets = data.offsets.reference;
5283
5284    // using floor because the reference offsets may contain decimals we are not going to consider here
5285    var floor = Math.floor;
5286    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
5287
5288    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
5289    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
5290    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
5291    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
5292
5293    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
5294
5295    // flip the variation if required
5296    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
5297
5298    // flips variation if reference element overflows boundaries
5299    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
5300
5301    // flips variation if popper content overflows boundaries
5302    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);
5303
5304    var flippedVariation = flippedVariationByRef || flippedVariationByContent;
5305
5306    if (overlapsRef || overflowsBoundaries || flippedVariation) {
5307      // this boolean to detect any flip loop
5308      data.flipped = true;
5309
5310      if (overlapsRef || overflowsBoundaries) {
5311        placement = flipOrder[index + 1];
5312      }
5313
5314      if (flippedVariation) {
5315        variation = getOppositeVariation(variation);
5316      }
5317
5318      data.placement = placement + (variation ? '-' + variation : '');
5319
5320      // this object contains `position`, we want to preserve it along with
5321      // any additional property we may add in the future
5322      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
5323
5324      data = runModifiers(data.instance.modifiers, data, 'flip');
5325    }
5326  });
5327  return data;
5328}
5329
5330/**
5331 * @function
5332 * @memberof Modifiers
5333 * @argument {Object} data - The data object generated by update method
5334 * @argument {Object} options - Modifiers configuration and options
5335 * @returns {Object} The data object, properly modified
5336 */
5337function keepTogether(data) {
5338  var _data$offsets = data.offsets,
5339      popper = _data$offsets.popper,
5340      reference = _data$offsets.reference;
5341
5342  var placement = data.placement.split('-')[0];
5343  var floor = Math.floor;
5344  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
5345  var side = isVertical ? 'right' : 'bottom';
5346  var opSide = isVertical ? 'left' : 'top';
5347  var measurement = isVertical ? 'width' : 'height';
5348
5349  if (popper[side] < floor(reference[opSide])) {
5350    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
5351  }
5352  if (popper[opSide] > floor(reference[side])) {
5353    data.offsets.popper[opSide] = floor(reference[side]);
5354  }
5355
5356  return data;
5357}
5358
5359/**
5360 * Converts a string containing value + unit into a px value number
5361 * @function
5362 * @memberof {modifiers~offset}
5363 * @private
5364 * @argument {String} str - Value + unit string
5365 * @argument {String} measurement - `height` or `width`
5366 * @argument {Object} popperOffsets
5367 * @argument {Object} referenceOffsets
5368 * @returns {Number|String}
5369 * Value in pixels, or original string if no values were extracted
5370 */
5371function toValue(str, measurement, popperOffsets, referenceOffsets) {
5372  // separate value from unit
5373  var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
5374  var value = +split[1];
5375  var unit = split[2];
5376
5377  // If it's not a number it's an operator, I guess
5378  if (!value) {
5379    return str;
5380  }
5381
5382  if (unit.indexOf('%') === 0) {
5383    var element = void 0;
5384    switch (unit) {
5385      case '%p':
5386        element = popperOffsets;
5387        break;
5388      case '%':
5389      case '%r':
5390      default:
5391        element = referenceOffsets;
5392    }
5393
5394    var rect = getClientRect(element);
5395    return rect[measurement] / 100 * value;
5396  } else if (unit === 'vh' || unit === 'vw') {
5397    // if is a vh or vw, we calculate the size based on the viewport
5398    var size = void 0;
5399    if (unit === 'vh') {
5400      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
5401    } else {
5402      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
5403    }
5404    return size / 100 * value;
5405  } else {
5406    // if is an explicit pixel unit, we get rid of the unit and keep the value
5407    // if is an implicit unit, it's px, and we return just the value
5408    return value;
5409  }
5410}
5411
5412/**
5413 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
5414 * @function
5415 * @memberof {modifiers~offset}
5416 * @private
5417 * @argument {String} offset
5418 * @argument {Object} popperOffsets
5419 * @argument {Object} referenceOffsets
5420 * @argument {String} basePlacement
5421 * @returns {Array} a two cells array with x and y offsets in numbers
5422 */
5423function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
5424  var offsets = [0, 0];
5425
5426  // Use height if placement is left or right and index is 0 otherwise use width
5427  // in this way the first offset will use an axis and the second one
5428  // will use the other one
5429  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
5430
5431  // Split the offset string to obtain a list of values and operands
5432  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
5433  var fragments = offset.split(/(\+|\-)/).map(function (frag) {
5434    return frag.trim();
5435  });
5436
5437  // Detect if the offset string contains a pair of values or a single one
5438  // they could be separated by comma or space
5439  var divider = fragments.indexOf(find(fragments, function (frag) {
5440    return frag.search(/,|\s/) !== -1;
5441  }));
5442
5443  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
5444    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
5445  }
5446
5447  // If divider is found, we divide the list of values and operands to divide
5448  // them by ofset X and Y.
5449  var splitRegex = /\s*,\s*|\s+/;
5450  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
5451
5452  // Convert the values with units to absolute pixels to allow our computations
5453  ops = ops.map(function (op, index) {
5454    // Most of the units rely on the orientation of the popper
5455    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
5456    var mergeWithPrevious = false;
5457    return op
5458    // This aggregates any `+` or `-` sign that aren't considered operators
5459    // e.g.: 10 + +5 => [10, +, +5]
5460    .reduce(function (a, b) {
5461      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
5462        a[a.length - 1] = b;
5463        mergeWithPrevious = true;
5464        return a;
5465      } else if (mergeWithPrevious) {
5466        a[a.length - 1] += b;
5467        mergeWithPrevious = false;
5468        return a;
5469      } else {
5470        return a.concat(b);
5471      }
5472    }, [])
5473    // Here we convert the string values into number values (in px)
5474    .map(function (str) {
5475      return toValue(str, measurement, popperOffsets, referenceOffsets);
5476    });
5477  });
5478
5479  // Loop trough the offsets arrays and execute the operations
5480  ops.forEach(function (op, index) {
5481    op.forEach(function (frag, index2) {
5482      if (isNumeric(frag)) {
5483        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
5484      }
5485    });
5486  });
5487  return offsets;
5488}
5489
5490/**
5491 * @function
5492 * @memberof Modifiers
5493 * @argument {Object} data - The data object generated by update method
5494 * @argument {Object} options - Modifiers configuration and options
5495 * @argument {Number|String} options.offset=0
5496 * The offset value as described in the modifier description
5497 * @returns {Object} The data object, properly modified
5498 */
5499function offset(data, _ref) {
5500  var offset = _ref.offset;
5501  var placement = data.placement,
5502      _data$offsets = data.offsets,
5503      popper = _data$offsets.popper,
5504      reference = _data$offsets.reference;
5505
5506  var basePlacement = placement.split('-')[0];
5507
5508  var offsets = void 0;
5509  if (isNumeric(+offset)) {
5510    offsets = [+offset, 0];
5511  } else {
5512    offsets = parseOffset(offset, popper, reference, basePlacement);
5513  }
5514
5515  if (basePlacement === 'left') {
5516    popper.top += offsets[0];
5517    popper.left -= offsets[1];
5518  } else if (basePlacement === 'right') {
5519    popper.top += offsets[0];
5520    popper.left += offsets[1];
5521  } else if (basePlacement === 'top') {
5522    popper.left += offsets[0];
5523    popper.top -= offsets[1];
5524  } else if (basePlacement === 'bottom') {
5525    popper.left += offsets[0];
5526    popper.top += offsets[1];
5527  }
5528
5529  data.popper = popper;
5530  return data;
5531}
5532
5533/**
5534 * @function
5535 * @memberof Modifiers
5536 * @argument {Object} data - The data object generated by `update` method
5537 * @argument {Object} options - Modifiers configuration and options
5538 * @returns {Object} The data object, properly modified
5539 */
5540function preventOverflow(data, options) {
5541  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
5542
5543  // If offsetParent is the reference element, we really want to
5544  // go one step up and use the next offsetParent as reference to
5545  // avoid to make this modifier completely useless and look like broken
5546  if (data.instance.reference === boundariesElement) {
5547    boundariesElement = getOffsetParent(boundariesElement);
5548  }
5549
5550  // NOTE: DOM access here
5551  // resets the popper's position so that the document size can be calculated excluding
5552  // the size of the popper element itself
5553  var transformProp = getSupportedPropertyName('transform');
5554  var popperStyles = data.instance.popper.style; // assignment to help minification
5555  var top = popperStyles.top,
5556      left = popperStyles.left,
5557      transform = popperStyles[transformProp];
5558
5559  popperStyles.top = '';
5560  popperStyles.left = '';
5561  popperStyles[transformProp] = '';
5562
5563  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);
5564
5565  // NOTE: DOM access here
5566  // restores the original style properties after the offsets have been computed
5567  popperStyles.top = top;
5568  popperStyles.left = left;
5569  popperStyles[transformProp] = transform;
5570
5571  options.boundaries = boundaries;
5572
5573  var order = options.priority;
5574  var popper = data.offsets.popper;
5575
5576  var check = {
5577    primary: function primary(placement) {
5578      var value = popper[placement];
5579      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
5580        value = Math.max(popper[placement], boundaries[placement]);
5581      }
5582      return defineProperty({}, placement, value);
5583    },
5584    secondary: function secondary(placement) {
5585      var mainSide = placement === 'right' ? 'left' : 'top';
5586      var value = popper[mainSide];
5587      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
5588        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
5589      }
5590      return defineProperty({}, mainSide, value);
5591    }
5592  };
5593
5594  order.forEach(function (placement) {
5595    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
5596    popper = _extends({}, popper, check[side](placement));
5597  });
5598
5599  data.offsets.popper = popper;
5600
5601  return data;
5602}
5603
5604/**
5605 * @function
5606 * @memberof Modifiers
5607 * @argument {Object} data - The data object generated by `update` method
5608 * @argument {Object} options - Modifiers configuration and options
5609 * @returns {Object} The data object, properly modified
5610 */
5611function shift(data) {
5612  var placement = data.placement;
5613  var basePlacement = placement.split('-')[0];
5614  var shiftvariation = placement.split('-')[1];
5615
5616  // if shift shiftvariation is specified, run the modifier
5617  if (shiftvariation) {
5618    var _data$offsets = data.offsets,
5619        reference = _data$offsets.reference,
5620        popper = _data$offsets.popper;
5621
5622    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
5623    var side = isVertical ? 'left' : 'top';
5624    var measurement = isVertical ? 'width' : 'height';
5625
5626    var shiftOffsets = {
5627      start: defineProperty({}, side, reference[side]),
5628      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
5629    };
5630
5631    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
5632  }
5633
5634  return data;
5635}
5636
5637/**
5638 * @function
5639 * @memberof Modifiers
5640 * @argument {Object} data - The data object generated by update method
5641 * @argument {Object} options - Modifiers configuration and options
5642 * @returns {Object} The data object, properly modified
5643 */
5644function hide(data) {
5645  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
5646    return data;
5647  }
5648
5649  var refRect = data.offsets.reference;
5650  var bound = find(data.instance.modifiers, function (modifier) {
5651    return modifier.name === 'preventOverflow';
5652  }).boundaries;
5653
5654  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
5655    // Avoid unnecessary DOM access if visibility hasn't changed
5656    if (data.hide === true) {
5657      return data;
5658    }
5659
5660    data.hide = true;
5661    data.attributes['x-out-of-boundaries'] = '';
5662  } else {
5663    // Avoid unnecessary DOM access if visibility hasn't changed
5664    if (data.hide === false) {
5665      return data;
5666    }
5667
5668    data.hide = false;
5669    data.attributes['x-out-of-boundaries'] = false;
5670  }
5671
5672  return data;
5673}
5674
5675/**
5676 * @function
5677 * @memberof Modifiers
5678 * @argument {Object} data - The data object generated by `update` method
5679 * @argument {Object} options - Modifiers configuration and options
5680 * @returns {Object} The data object, properly modified
5681 */
5682function inner(data) {
5683  var placement = data.placement;
5684  var basePlacement = placement.split('-')[0];
5685  var _data$offsets = data.offsets,
5686      popper = _data$offsets.popper,
5687      reference = _data$offsets.reference;
5688
5689  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
5690
5691  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
5692
5693  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
5694
5695  data.placement = getOppositePlacement(placement);
5696  data.offsets.popper = getClientRect(popper);
5697
5698  return data;
5699}
5700
5701/**
5702 * Modifier function, each modifier can have a function of this type assigned
5703 * to its `fn` property.<br />
5704 * These functions will be called on each update, this means that you must
5705 * make sure they are performant enough to avoid performance bottlenecks.
5706 *
5707 * @function ModifierFn
5708 * @argument {dataObject} data - The data object generated by `update` method
5709 * @argument {Object} options - Modifiers configuration and options
5710 * @returns {dataObject} The data object, properly modified
5711 */
5712
5713/**
5714 * Modifiers are plugins used to alter the behavior of your poppers.<br />
5715 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
5716 * needed by the library.
5717 *
5718 * Usually you don't want to override the `order`, `fn` and `onLoad` props.
5719 * All the other properties are configurations that could be tweaked.
5720 * @namespace modifiers
5721 */
5722var modifiers = {
5723  /**
5724   * Modifier used to shift the popper on the start or end of its reference
5725   * element.<br />
5726   * It will read the variation of the `placement` property.<br />
5727   * It can be one either `-end` or `-start`.
5728   * @memberof modifiers
5729   * @inner
5730   */
5731  shift: {
5732    /** @prop {number} order=100 - Index used to define the order of execution */
5733    order: 100,
5734    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5735    enabled: true,
5736    /** @prop {ModifierFn} */
5737    fn: shift
5738  },
5739
5740  /**
5741   * The `offset` modifier can shift your popper on both its axis.
5742   *
5743   * It accepts the following units:
5744   * - `px` or unit-less, interpreted as pixels
5745   * - `%` or `%r`, percentage relative to the length of the reference element
5746   * - `%p`, percentage relative to the length of the popper element
5747   * - `vw`, CSS viewport width unit
5748   * - `vh`, CSS viewport height unit
5749   *
5750   * For length is intended the main axis relative to the placement of the popper.<br />
5751   * This means that if the placement is `top` or `bottom`, the length will be the
5752   * `width`. In case of `left` or `right`, it will be the `height`.
5753   *
5754   * You can provide a single value (as `Number` or `String`), or a pair of values
5755   * as `String` divided by a comma or one (or more) white spaces.<br />
5756   * The latter is a deprecated method because it leads to confusion and will be
5757   * removed in v2.<br />
5758   * Additionally, it accepts additions and subtractions between different units.
5759   * Note that multiplications and divisions aren't supported.
5760   *
5761   * Valid examples are:
5762   * ```
5763   * 10
5764   * '10%'
5765   * '10, 10'
5766   * '10%, 10'
5767   * '10 + 10%'
5768   * '10 - 5vh + 3%'
5769   * '-10px + 5vh, 5px - 6%'
5770   * ```
5771   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
5772   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
5773   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
5774   *
5775   * @memberof modifiers
5776   * @inner
5777   */
5778  offset: {
5779    /** @prop {number} order=200 - Index used to define the order of execution */
5780    order: 200,
5781    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5782    enabled: true,
5783    /** @prop {ModifierFn} */
5784    fn: offset,
5785    /** @prop {Number|String} offset=0
5786     * The offset value as described in the modifier description
5787     */
5788    offset: 0
5789  },
5790
5791  /**
5792   * Modifier used to prevent the popper from being positioned outside the boundary.
5793   *
5794   * A scenario exists where the reference itself is not within the boundaries.<br />
5795   * We can say it has "escaped the boundaries" — or just "escaped".<br />
5796   * In this case we need to decide whether the popper should either:
5797   *
5798   * - detach from the reference and remain "trapped" in the boundaries, or
5799   * - if it should ignore the boundary and "escape with its reference"
5800   *
5801   * When `escapeWithReference` is set to`true` and reference is completely
5802   * outside its boundaries, the popper will overflow (or completely leave)
5803   * the boundaries in order to remain attached to the edge of the reference.
5804   *
5805   * @memberof modifiers
5806   * @inner
5807   */
5808  preventOverflow: {
5809    /** @prop {number} order=300 - Index used to define the order of execution */
5810    order: 300,
5811    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5812    enabled: true,
5813    /** @prop {ModifierFn} */
5814    fn: preventOverflow,
5815    /**
5816     * @prop {Array} [priority=['left','right','top','bottom']]
5817     * Popper will try to prevent overflow following these priorities by default,
5818     * then, it could overflow on the left and on top of the `boundariesElement`
5819     */
5820    priority: ['left', 'right', 'top', 'bottom'],
5821    /**
5822     * @prop {number} padding=5
5823     * Amount of pixel used to define a minimum distance between the boundaries
5824     * and the popper. This makes sure the popper always has a little padding
5825     * between the edges of its container
5826     */
5827    padding: 5,
5828    /**
5829     * @prop {String|HTMLElement} boundariesElement='scrollParent'
5830     * Boundaries used by the modifier. Can be `scrollParent`, `window`,
5831     * `viewport` or any DOM element.
5832     */
5833    boundariesElement: 'scrollParent'
5834  },
5835
5836  /**
5837   * Modifier used to make sure the reference and its popper stay near each other
5838   * without leaving any gap between the two. Especially useful when the arrow is
5839   * enabled and you want to ensure that it points to its reference element.
5840   * It cares only about the first axis. You can still have poppers with margin
5841   * between the popper and its reference element.
5842   * @memberof modifiers
5843   * @inner
5844   */
5845  keepTogether: {
5846    /** @prop {number} order=400 - Index used to define the order of execution */
5847    order: 400,
5848    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5849    enabled: true,
5850    /** @prop {ModifierFn} */
5851    fn: keepTogether
5852  },
5853
5854  /**
5855   * This modifier is used to move the `arrowElement` of the popper to make
5856   * sure it is positioned between the reference element and its popper element.
5857   * It will read the outer size of the `arrowElement` node to detect how many
5858   * pixels of conjunction are needed.
5859   *
5860   * It has no effect if no `arrowElement` is provided.
5861   * @memberof modifiers
5862   * @inner
5863   */
5864  arrow: {
5865    /** @prop {number} order=500 - Index used to define the order of execution */
5866    order: 500,
5867    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5868    enabled: true,
5869    /** @prop {ModifierFn} */
5870    fn: arrow,
5871    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
5872    element: '[x-arrow]'
5873  },
5874
5875  /**
5876   * Modifier used to flip the popper's placement when it starts to overlap its
5877   * reference element.
5878   *
5879   * Requires the `preventOverflow` modifier before it in order to work.
5880   *
5881   * **NOTE:** this modifier will interrupt the current update cycle and will
5882   * restart it if it detects the need to flip the placement.
5883   * @memberof modifiers
5884   * @inner
5885   */
5886  flip: {
5887    /** @prop {number} order=600 - Index used to define the order of execution */
5888    order: 600,
5889    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5890    enabled: true,
5891    /** @prop {ModifierFn} */
5892    fn: flip,
5893    /**
5894     * @prop {String|Array} behavior='flip'
5895     * The behavior used to change the popper's placement. It can be one of
5896     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
5897     * placements (with optional variations)
5898     */
5899    behavior: 'flip',
5900    /**
5901     * @prop {number} padding=5
5902     * The popper will flip if it hits the edges of the `boundariesElement`
5903     */
5904    padding: 5,
5905    /**
5906     * @prop {String|HTMLElement} boundariesElement='viewport'
5907     * The element which will define the boundaries of the popper position.
5908     * The popper will never be placed outside of the defined boundaries
5909     * (except if `keepTogether` is enabled)
5910     */
5911    boundariesElement: 'viewport',
5912    /**
5913     * @prop {Boolean} flipVariations=false
5914     * The popper will switch placement variation between `-start` and `-end` when
5915     * the reference element overlaps its boundaries.
5916     *
5917     * The original placement should have a set variation.
5918     */
5919    flipVariations: false,
5920    /**
5921     * @prop {Boolean} flipVariationsByContent=false
5922     * The popper will switch placement variation between `-start` and `-end` when
5923     * the popper element overlaps its reference boundaries.
5924     *
5925     * The original placement should have a set variation.
5926     */
5927    flipVariationsByContent: false
5928  },
5929
5930  /**
5931   * Modifier used to make the popper flow toward the inner of the reference element.
5932   * By default, when this modifier is disabled, the popper will be placed outside
5933   * the reference element.
5934   * @memberof modifiers
5935   * @inner
5936   */
5937  inner: {
5938    /** @prop {number} order=700 - Index used to define the order of execution */
5939    order: 700,
5940    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
5941    enabled: false,
5942    /** @prop {ModifierFn} */
5943    fn: inner
5944  },
5945
5946  /**
5947   * Modifier used to hide the popper when its reference element is outside of the
5948   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
5949   * be used to hide with a CSS selector the popper when its reference is
5950   * out of boundaries.
5951   *
5952   * Requires the `preventOverflow` modifier before it in order to work.
5953   * @memberof modifiers
5954   * @inner
5955   */
5956  hide: {
5957    /** @prop {number} order=800 - Index used to define the order of execution */
5958    order: 800,
5959    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5960    enabled: true,
5961    /** @prop {ModifierFn} */
5962    fn: hide
5963  },
5964
5965  /**
5966   * Computes the style that will be applied to the popper element to gets
5967   * properly positioned.
5968   *
5969   * Note that this modifier will not touch the DOM, it just prepares the styles
5970   * so that `applyStyle` modifier can apply it. This separation is useful
5971   * in case you need to replace `applyStyle` with a custom implementation.
5972   *
5973   * This modifier has `850` as `order` value to maintain backward compatibility
5974   * with previous versions of Popper.js. Expect the modifiers ordering method
5975   * to change in future major versions of the library.
5976   *
5977   * @memberof modifiers
5978   * @inner
5979   */
5980  computeStyle: {
5981    /** @prop {number} order=850 - Index used to define the order of execution */
5982    order: 850,
5983    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
5984    enabled: true,
5985    /** @prop {ModifierFn} */
5986    fn: computeStyle,
5987    /**
5988     * @prop {Boolean} gpuAcceleration=true
5989     * If true, it uses the CSS 3D transformation to position the popper.
5990     * Otherwise, it will use the `top` and `left` properties
5991     */
5992    gpuAcceleration: true,
5993    /**
5994     * @prop {string} [x='bottom']
5995     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
5996     * Change this if your popper should grow in a direction different from `bottom`
5997     */
5998    x: 'bottom',
5999    /**
6000     * @prop {string} [x='left']
6001     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
6002     * Change this if your popper should grow in a direction different from `right`
6003     */
6004    y: 'right'
6005  },
6006
6007  /**
6008   * Applies the computed styles to the popper element.
6009   *
6010   * All the DOM manipulations are limited to this modifier. This is useful in case
6011   * you want to integrate Popper.js inside a framework or view library and you
6012   * want to delegate all the DOM manipulations to it.
6013   *
6014   * Note that if you disable this modifier, you must make sure the popper element
6015   * has its position set to `absolute` before Popper.js can do its work!
6016   *
6017   * Just disable this modifier and define your own to achieve the desired effect.
6018   *
6019   * @memberof modifiers
6020   * @inner
6021   */
6022  applyStyle: {
6023    /** @prop {number} order=900 - Index used to define the order of execution */
6024    order: 900,
6025    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
6026    enabled: true,
6027    /** @prop {ModifierFn} */
6028    fn: applyStyle,
6029    /** @prop {Function} */
6030    onLoad: applyStyleOnLoad,
6031    /**
6032     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
6033     * @prop {Boolean} gpuAcceleration=true
6034     * If true, it uses the CSS 3D transformation to position the popper.
6035     * Otherwise, it will use the `top` and `left` properties
6036     */
6037    gpuAcceleration: undefined
6038  }
6039};
6040
6041/**
6042 * The `dataObject` is an object containing all the information used by Popper.js.
6043 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
6044 * @name dataObject
6045 * @property {Object} data.instance The Popper.js instance
6046 * @property {String} data.placement Placement applied to popper
6047 * @property {String} data.originalPlacement Placement originally defined on init
6048 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
6049 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
6050 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
6051 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
6052 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
6053 * @property {Object} data.boundaries Offsets of the popper boundaries
6054 * @property {Object} data.offsets The measurements of popper, reference and arrow elements
6055 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
6056 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
6057 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
6058 */
6059
6060/**
6061 * Default options provided to Popper.js constructor.<br />
6062 * These can be overridden using the `options` argument of Popper.js.<br />
6063 * To override an option, simply pass an object with the same
6064 * structure of the `options` object, as the 3rd argument. For example:
6065 * ```
6066 * new Popper(ref, pop, {
6067 *   modifiers: {
6068 *     preventOverflow: { enabled: false }
6069 *   }
6070 * })
6071 * ```
6072 * @type {Object}
6073 * @static
6074 * @memberof Popper
6075 */
6076var Defaults = {
6077  /**
6078   * Popper's placement.
6079   * @prop {Popper.placements} placement='bottom'
6080   */
6081  placement: 'bottom',
6082
6083  /**
6084   * Set this to true if you want popper to position it self in 'fixed' mode
6085   * @prop {Boolean} positionFixed=false
6086   */
6087  positionFixed: false,
6088
6089  /**
6090   * Whether events (resize, scroll) are initially enabled.
6091   * @prop {Boolean} eventsEnabled=true
6092   */
6093  eventsEnabled: true,
6094
6095  /**
6096   * Set to true if you want to automatically remove the popper when
6097   * you call the `destroy` method.
6098   * @prop {Boolean} removeOnDestroy=false
6099   */
6100  removeOnDestroy: false,
6101
6102  /**
6103   * Callback called when the popper is created.<br />
6104   * By default, it is set to no-op.<br />
6105   * Access Popper.js instance with `data.instance`.
6106   * @prop {onCreate}
6107   */
6108  onCreate: function onCreate() {},
6109
6110  /**
6111   * Callback called when the popper is updated. This callback is not called
6112   * on the initialization/creation of the popper, but only on subsequent
6113   * updates.<br />
6114   * By default, it is set to no-op.<br />
6115   * Access Popper.js instance with `data.instance`.
6116   * @prop {onUpdate}
6117   */
6118  onUpdate: function onUpdate() {},
6119
6120  /**
6121   * List of modifiers used to modify the offsets before they are applied to the popper.
6122   * They provide most of the functionalities of Popper.js.
6123   * @prop {modifiers}
6124   */
6125  modifiers: modifiers
6126};
6127
6128/**
6129 * @callback onCreate
6130 * @param {dataObject} data
6131 */
6132
6133/**
6134 * @callback onUpdate
6135 * @param {dataObject} data
6136 */
6137
6138// Utils
6139// Methods
6140var Popper = function () {
6141  /**
6142   * Creates a new Popper.js instance.
6143   * @class Popper
6144   * @param {Element|referenceObject} reference - The reference element used to position the popper
6145   * @param {Element} popper - The HTML / XML element used as the popper
6146   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
6147   * @return {Object} instance - The generated Popper.js instance
6148   */
6149  function Popper(reference, popper) {
6150    var _this = this;
6151
6152    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
6153    classCallCheck(this, Popper);
6154
6155    this.scheduleUpdate = function () {
6156      return requestAnimationFrame(_this.update);
6157    };
6158
6159    // make update() debounced, so that it only runs at most once-per-tick
6160    this.update = debounce(this.update.bind(this));
6161
6162    // with {} we create a new object with the options inside it
6163    this.options = _extends({}, Popper.Defaults, options);
6164
6165    // init state
6166    this.state = {
6167      isDestroyed: false,
6168      isCreated: false,
6169      scrollParents: []
6170    };
6171
6172    // get reference and popper elements (allow jQuery wrappers)
6173    this.reference = reference && reference.jquery ? reference[0] : reference;
6174    this.popper = popper && popper.jquery ? popper[0] : popper;
6175
6176    // Deep merge modifiers options
6177    this.options.modifiers = {};
6178    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
6179      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
6180    });
6181
6182    // Refactoring modifiers' list (Object => Array)
6183    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
6184      return _extends({
6185        name: name
6186      }, _this.options.modifiers[name]);
6187    })
6188    // sort the modifiers by order
6189    .sort(function (a, b) {
6190      return a.order - b.order;
6191    });
6192
6193    // modifiers have the ability to execute arbitrary code when Popper.js get inited
6194    // such code is executed in the same order of its modifier
6195    // they could add new properties to their options configuration
6196    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
6197    this.modifiers.forEach(function (modifierOptions) {
6198      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
6199        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
6200      }
6201    });
6202
6203    // fire the first update to position the popper in the right place
6204    this.update();
6205
6206    var eventsEnabled = this.options.eventsEnabled;
6207    if (eventsEnabled) {
6208      // setup event listeners, they will take care of update the position in specific situations
6209      this.enableEventListeners();
6210    }
6211
6212    this.state.eventsEnabled = eventsEnabled;
6213  }
6214
6215  // We can't use class properties because they don't get listed in the
6216  // class prototype and break stuff like Sinon stubs
6217
6218
6219  createClass(Popper, [{
6220    key: 'update',
6221    value: function update$$1() {
6222      return update.call(this);
6223    }
6224  }, {
6225    key: 'destroy',
6226    value: function destroy$$1() {
6227      return destroy.call(this);
6228    }
6229  }, {
6230    key: 'enableEventListeners',
6231    value: function enableEventListeners$$1() {
6232      return enableEventListeners.call(this);
6233    }
6234  }, {
6235    key: 'disableEventListeners',
6236    value: function disableEventListeners$$1() {
6237      return disableEventListeners.call(this);
6238    }
6239
6240    /**
6241     * Schedules an update. It will run on the next UI update available.
6242     * @method scheduleUpdate
6243     * @memberof Popper
6244     */
6245
6246
6247    /**
6248     * Collection of utilities useful when writing custom modifiers.
6249     * Starting from version 1.7, this method is available only if you
6250     * include `popper-utils.js` before `popper.js`.
6251     *
6252     * **DEPRECATION**: This way to access PopperUtils is deprecated
6253     * and will be removed in v2! Use the PopperUtils module directly instead.
6254     * Due to the high instability of the methods contained in Utils, we can't
6255     * guarantee them to follow semver. Use them at your own risk!
6256     * @static
6257     * @private
6258     * @type {Object}
6259     * @deprecated since version 1.8
6260     * @member Utils
6261     * @memberof Popper
6262     */
6263
6264  }]);
6265  return Popper;
6266}();
6267
6268/**
6269 * The `referenceObject` is an object that provides an interface compatible with Popper.js
6270 * and lets you use it as replacement of a real DOM node.<br />
6271 * You can use this method to position a popper relatively to a set of coordinates
6272 * in case you don't have a DOM node to use as reference.
6273 *
6274 * ```
6275 * new Popper(referenceObject, popperNode);
6276 * ```
6277 *
6278 * NB: This feature isn't supported in Internet Explorer 10.
6279 * @name referenceObject
6280 * @property {Function} data.getBoundingClientRect
6281 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
6282 * @property {number} data.clientWidth
6283 * An ES6 getter that will return the width of the virtual reference element.
6284 * @property {number} data.clientHeight
6285 * An ES6 getter that will return the height of the virtual reference element.
6286 */
6287
6288
6289Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
6290Popper.placements = placements;
6291Popper.Defaults = Defaults;
6292
6293/* harmony default export */ __webpack_exports__["default"] = (Popper);
6294//# sourceMappingURL=popper.js.map
6295
6296/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
6297
6298/***/ }),
6299
vendor: 13,851 bytes, lines 6300-6755
6300/***/ "./node_modules/rematrix/dist/rematrix.es.js":
6301/*!***************************************************!*\
6302  !*** ./node_modules/rematrix/dist/rematrix.es.js ***!
6303  \***************************************************/
6304/*! exports provided: format, identity, inverse, multiply, parse, rotate, rotateX, rotateY, rotateZ, scale, scaleX, scaleY, scaleZ, skew, skewX, skewY, toString, translate, translateX, translateY, translateZ */
6305/***/ (function(module, __webpack_exports__, __webpack_require__) {
6306
6307"use strict";
6308__webpack_require__.r(__webpack_exports__);
6309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "format", function() { return format; });
6310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; });
6311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inverse", function() { return inverse; });
6312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multiply", function() { return multiply; });
6313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; });
6314/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rotate", function() { return rotate; });
6315/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rotateX", function() { return rotateX; });
6316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rotateY", function() { return rotateY; });
6317/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rotateZ", function() { return rotateZ; });
6318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scale", function() { return scale; });
6319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scaleX", function() { return scaleX; });
6320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scaleY", function() { return scaleY; });
6321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scaleZ", function() { return scaleZ; });
6322/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skew", function() { return skew; });
6323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skewX", function() { return skewX; });
6324/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skewY", function() { return skewY; });
6325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toString", function() { return toString; });
6326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translate", function() { return translate; });
6327/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translateX", function() { return translateX; });
6328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translateY", function() { return translateY; });
6329/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translateZ", function() { return translateZ; });
6330/*! @license Rematrix v0.3.0
6331
6332	Copyright 2018 Julian Lloyd.
6333
6334	Permission is hereby granted, free of charge, to any person obtaining a copy
6335	of this software and associated documentation files (the "Software"), to deal
6336	in the Software without restriction, including without limitation the rights
6337	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
6338	copies of the Software, and to permit persons to whom the Software is
6339	furnished to do so, subject to the following conditions:
6340
6341	The above copyright notice and this permission notice shall be included in
6342	all copies or substantial portions of the Software.
6343
6344	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6345	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6346	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6347	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
6348	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
6349	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
6350	THE SOFTWARE.
6351*/
6352/**
6353 * @module Rematrix
6354 */
6355
6356/**
6357 * Transformation matrices in the browser come in two flavors:
6358 *
6359 *  - `matrix` using 6 values (short)
6360 *  - `matrix3d` using 16 values (long)
6361 *
6362 * This utility follows this [conversion guide](https://goo.gl/EJlUQ1)
6363 * to expand short form matrices to their equivalent long form.
6364 *
6365 * @param  {array} source - Accepts both short and long form matrices.
6366 * @return {array}
6367 */
6368function format(source) {
6369	if (source.constructor !== Array) {
6370		throw new TypeError('Expected array.')
6371	}
6372	if (source.length === 16) {
6373		return source
6374	}
6375	if (source.length === 6) {
6376		var matrix = identity();
6377		matrix[0] = source[0];
6378		matrix[1] = source[1];
6379		matrix[4] = source[2];
6380		matrix[5] = source[3];
6381		matrix[12] = source[4];
6382		matrix[13] = source[5];
6383		return matrix
6384	}
6385	throw new RangeError('Expected array with either 6 or 16 values.')
6386}
6387
6388/**
6389 * Returns a matrix representing no transformation. The product of any matrix
6390 * multiplied by the identity matrix will be the original matrix.
6391 *
6392 * > **Tip:** Similar to how `5 * 1 === 5`, where `1` is the identity.
6393 *
6394 * @return {array}
6395 */
6396function identity() {
6397	var matrix = [];
6398	for (var i = 0; i < 16; i++) {
6399		i % 5 == 0 ? matrix.push(1) : matrix.push(0);
6400	}
6401	return matrix
6402}
6403
6404/**
6405 * Returns a matrix describing the inverse transformation of the source
6406 * matrix. The product of any matrix multiplied by its inverse will be the
6407 * identity matrix.
6408 *
6409 * > **Tip:** Similar to how `5 * (1/5) === 1`, where `1/5` is the inverse.
6410 *
6411 * @param  {array} source - Accepts both short and long form matrices.
6412 * @return {array}
6413 */
6414function inverse(source) {
6415	var m = format(source);
6416
6417	var s0 = m[0] * m[5] - m[4] * m[1];
6418	var s1 = m[0] * m[6] - m[4] * m[2];
6419	var s2 = m[0] * m[7] - m[4] * m[3];
6420	var s3 = m[1] * m[6] - m[5] * m[2];
6421	var s4 = m[1] * m[7] - m[5] * m[3];
6422	var s5 = m[2] * m[7] - m[6] * m[3];
6423
6424	var c5 = m[10] * m[15] - m[14] * m[11];
6425	var c4 = m[9] * m[15] - m[13] * m[11];
6426	var c3 = m[9] * m[14] - m[13] * m[10];
6427	var c2 = m[8] * m[15] - m[12] * m[11];
6428	var c1 = m[8] * m[14] - m[12] * m[10];
6429	var c0 = m[8] * m[13] - m[12] * m[9];
6430
6431	var determinant = 1 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0);
6432
6433	if (isNaN(determinant) || determinant === Infinity) {
6434		throw new Error('Inverse determinant attempted to divide by zero.')
6435	}
6436
6437	return [
6438		(m[5] * c5 - m[6] * c4 + m[7] * c3) * determinant,
6439		(-m[1] * c5 + m[2] * c4 - m[3] * c3) * determinant,
6440		(m[13] * s5 - m[14] * s4 + m[15] * s3) * determinant,
6441		(-m[9] * s5 + m[10] * s4 - m[11] * s3) * determinant,
6442
6443		(-m[4] * c5 + m[6] * c2 - m[7] * c1) * determinant,
6444		(m[0] * c5 - m[2] * c2 + m[3] * c1) * determinant,
6445		(-m[12] * s5 + m[14] * s2 - m[15] * s1) * determinant,
6446		(m[8] * s5 - m[10] * s2 + m[11] * s1) * determinant,
6447
6448		(m[4] * c4 - m[5] * c2 + m[7] * c0) * determinant,
6449		(-m[0] * c4 + m[1] * c2 - m[3] * c0) * determinant,
6450		(m[12] * s4 - m[13] * s2 + m[15] * s0) * determinant,
6451		(-m[8] * s4 + m[9] * s2 - m[11] * s0) * determinant,
6452
6453		(-m[4] * c3 + m[5] * c1 - m[6] * c0) * determinant,
6454		(m[0] * c3 - m[1] * c1 + m[2] * c0) * determinant,
6455		(-m[12] * s3 + m[13] * s1 - m[14] * s0) * determinant,
6456		(m[8] * s3 - m[9] * s1 + m[10] * s0) * determinant
6457	]
6458}
6459
6460/**
6461 * Returns a 4x4 matrix describing the combined transformations
6462 * of both arguments.
6463 *
6464 * > **Note:** Order is very important. For example, rotating 45°
6465 * along the Z-axis, followed by translating 500 pixels along the
6466 * Y-axis... is not the same as translating 500 pixels along the
6467 * Y-axis, followed by rotating 45° along on the Z-axis.
6468 *
6469 * @param  {array} m - Accepts both short and long form matrices.
6470 * @param  {array} x - Accepts both short and long form matrices.
6471 * @return {array}
6472 */
6473function multiply(m, x) {
6474	var fm = format(m);
6475	var fx = format(x);
6476	var product = [];
6477
6478	for (var i = 0; i < 4; i++) {
6479		var row = [fm[i], fm[i + 4], fm[i + 8], fm[i + 12]];
6480		for (var j = 0; j < 4; j++) {
6481			var k = j * 4;
6482			var col = [fx[k], fx[k + 1], fx[k + 2], fx[k + 3]];
6483			var result =
6484				row[0] * col[0] + row[1] * col[1] + row[2] * col[2] + row[3] * col[3];
6485
6486			product[i + k] = result;
6487		}
6488	}
6489
6490	return product
6491}
6492
6493/**
6494 * Attempts to return a 4x4 matrix describing the CSS transform
6495 * matrix passed in, but will return the identity matrix as a
6496 * fallback.
6497 *
6498 * > **Tip:** This method is used to convert a CSS matrix (retrieved as a
6499 * `string` from computed styles) to its equivalent array format.
6500 *
6501 * @param  {string} source - `matrix` or `matrix3d` CSS Transform value.
6502 * @return {array}
6503 */
6504function parse(source) {
6505	if (typeof source === 'string') {
6506		var match = source.match(/matrix(3d)?\(([^)]+)\)/);
6507		if (match) {
6508			var raw = match[2].split(', ').map(parseFloat);
6509			return format(raw)
6510		}
6511	}
6512	return identity()
6513}
6514
6515/**
6516 * Returns a 4x4 matrix describing Z-axis rotation.
6517 *
6518 * > **Tip:** This is just an alias for `Rematrix.rotateZ` for parity with CSS
6519 *
6520 * @param  {number} angle - Measured in degrees.
6521 * @return {array}
6522 */
6523function rotate(angle) {
6524	return rotateZ(angle)
6525}
6526
6527/**
6528 * Returns a 4x4 matrix describing X-axis rotation.
6529 *
6530 * @param  {number} angle - Measured in degrees.
6531 * @return {array}
6532 */
6533function rotateX(angle) {
6534	var theta = Math.PI / 180 * angle;
6535	var matrix = identity();
6536
6537	matrix[5] = matrix[10] = Math.cos(theta);
6538	matrix[6] = matrix[9] = Math.sin(theta);
6539	matrix[9] *= -1;
6540
6541	return matrix
6542}
6543
6544/**
6545 * Returns a 4x4 matrix describing Y-axis rotation.
6546 *
6547 * @param  {number} angle - Measured in degrees.
6548 * @return {array}
6549 */
6550function rotateY(angle) {
6551	var theta = Math.PI / 180 * angle;
6552	var matrix = identity();
6553
6554	matrix[0] = matrix[10] = Math.cos(theta);
6555	matrix[2] = matrix[8] = Math.sin(theta);
6556	matrix[2] *= -1;
6557
6558	return matrix
6559}
6560
6561/**
6562 * Returns a 4x4 matrix describing Z-axis rotation.
6563 *
6564 * @param  {number} angle - Measured in degrees.
6565 * @return {array}
6566 */
6567function rotateZ(angle) {
6568	var theta = Math.PI / 180 * angle;
6569	var matrix = identity();
6570
6571	matrix[0] = matrix[5] = Math.cos(theta);
6572	matrix[1] = matrix[4] = Math.sin(theta);
6573	matrix[4] *= -1;
6574
6575	return matrix
6576}
6577
6578/**
6579 * Returns a 4x4 matrix describing 2D scaling. The first argument
6580 * is used for both X and Y-axis scaling, unless an optional
6581 * second argument is provided to explicitly define Y-axis scaling.
6582 *
6583 * @param  {number} scalar    - Decimal multiplier.
6584 * @param  {number} [scalarY] - Decimal multiplier.
6585 * @return {array}
6586 */
6587function scale(scalar, scalarY) {
6588	var matrix = identity();
6589
6590	matrix[0] = scalar;
6591	matrix[5] = typeof scalarY === 'number' ? scalarY : scalar;
6592
6593	return matrix
6594}
6595
6596/**
6597 * Returns a 4x4 matrix describing X-axis scaling.
6598 *
6599 * @param  {number} scalar - Decimal multiplier.
6600 * @return {array}
6601 */
6602function scaleX(scalar) {
6603	var matrix = identity();
6604	matrix[0] = scalar;
6605	return matrix
6606}
6607
6608/**
6609 * Returns a 4x4 matrix describing Y-axis scaling.
6610 *
6611 * @param  {number} scalar - Decimal multiplier.
6612 * @return {array}
6613 */
6614function scaleY(scalar) {
6615	var matrix = identity();
6616	matrix[5] = scalar;
6617	return matrix
6618}
6619
6620/**
6621 * Returns a 4x4 matrix describing Z-axis scaling.
6622 *
6623 * @param  {number} scalar - Decimal multiplier.
6624 * @return {array}
6625 */
6626function scaleZ(scalar) {
6627	var matrix = identity();
6628	matrix[10] = scalar;
6629	return matrix
6630}
6631
6632/**
6633 * Returns a 4x4 matrix describing shear. The first argument
6634 * defines X-axis shearing, and an optional second argument
6635 * defines Y-axis shearing.
6636 *
6637 * @param  {number} angleX   - Measured in degrees.
6638 * @param  {number} [angleY] - Measured in degrees.
6639 * @return {array}
6640 */
6641function skew(angleX, angleY) {
6642	var thetaX = Math.PI / 180 * angleX;
6643	var matrix = identity();
6644
6645	matrix[4] = Math.tan(thetaX);
6646
6647	if (angleY) {
6648		var thetaY = Math.PI / 180 * angleY;
6649		matrix[1] = Math.tan(thetaY);
6650	}
6651
6652	return matrix
6653}
6654
6655/**
6656 * Returns a 4x4 matrix describing X-axis shear.
6657 *
6658 * @param  {number} angle - Measured in degrees.
6659 * @return {array}
6660 */
6661function skewX(angle) {
6662	var theta = Math.PI / 180 * angle;
6663	var matrix = identity();
6664
6665	matrix[4] = Math.tan(theta);
6666
6667	return matrix
6668}
6669
6670/**
6671 * Returns a 4x4 matrix describing Y-axis shear.
6672 *
6673 * @param  {number} angle - Measured in degrees
6674 * @return {array}
6675 */
6676function skewY(angle) {
6677	var theta = Math.PI / 180 * angle;
6678	var matrix = identity();
6679
6680	matrix[1] = Math.tan(theta);
6681
6682	return matrix
6683}
6684
6685/**
6686 * Returns a CSS Transform property value equivalent to the source matrix.
6687 *
6688 * @param  {array} source - Accepts both short and long form matrices.
6689 * @return {string}
6690 */
6691function toString(source) {
6692	return ("matrix3d(" + (format(source).join(', ')) + ")")
6693}
6694
6695/**
6696 * Returns a 4x4 matrix describing 2D translation. The first
6697 * argument defines X-axis translation, and an optional second
6698 * argument defines Y-axis translation.
6699 *
6700 * @param  {number} distanceX   - Measured in pixels.
6701 * @param  {number} [distanceY] - Measured in pixels.
6702 * @return {array}
6703 */
6704function translate(distanceX, distanceY) {
6705	var matrix = identity();
6706	matrix[12] = distanceX;
6707
6708	if (distanceY) {
6709		matrix[13] = distanceY;
6710	}
6711
6712	return matrix
6713}
6714
6715/**
6716 * Returns a 4x4 matrix describing X-axis translation.
6717 *
6718 * @param  {number} distance - Measured in pixels.
6719 * @return {array}
6720 */
6721function translateX(distance) {
6722	var matrix = identity();
6723	matrix[12] = distance;
6724	return matrix
6725}
6726
6727/**
6728 * Returns a 4x4 matrix describing Y-axis translation.
6729 *
6730 * @param  {number} distance - Measured in pixels.
6731 * @return {array}
6732 */
6733function translateY(distance) {
6734	var matrix = identity();
6735	matrix[13] = distance;
6736	return matrix
6737}
6738
6739/**
6740 * Returns a 4x4 matrix describing Z-axis translation.
6741 *
6742 * @param  {number} distance - Measured in pixels.
6743 * @return {array}
6744 */
6745function translateZ(distance) {
6746	var matrix = identity();
6747	matrix[14] = distance;
6748	return matrix
6749}
6750
6751
6752
6753
6754/***/ }),
6755
vendor: 32,840 bytes, lines 6756-7957
6756/***/ "./node_modules/scrollreveal/dist/scrollreveal.es.js":
6757/*!***********************************************************!*\
6758  !*** ./node_modules/scrollreveal/dist/scrollreveal.es.js ***!
6759  \***********************************************************/
6760/*! exports provided: default */
6761/***/ (function(module, __webpack_exports__, __webpack_require__) {
6762
6763"use strict";
6764__webpack_require__.r(__webpack_exports__);
6765/* harmony import */ var tealight__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tealight */ "./node_modules/tealight/dist/tealight.es.js");
6766/* harmony import */ var rematrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rematrix */ "./node_modules/rematrix/dist/rematrix.es.js");
6767/* harmony import */ var miniraf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! miniraf */ "./node_modules/miniraf/dist/miniraf.es.js");
6768/*! @license ScrollReveal v4.0.9
6769
6770	Copyright 2021 Fisssion LLC.
6771
6772	Licensed under the GNU General Public License 3.0 for
6773	compatible open source projects and non-commercial use.
6774
6775	For commercial sites, themes, projects, and applications,
6776	keep your source code private/proprietary by purchasing
6777	a commercial license from https://scrollrevealjs.org/
6778*/
6779
6780
6781
6782
6783var defaults = {
6784	delay: 0,
6785	distance: '0',
6786	duration: 600,
6787	easing: 'cubic-bezier(0.5, 0, 0, 1)',
6788	interval: 0,
6789	opacity: 0,
6790	origin: 'bottom',
6791	rotate: {
6792		x: 0,
6793		y: 0,
6794		z: 0
6795	},
6796	scale: 1,
6797	cleanup: false,
6798	container: document.documentElement,
6799	desktop: true,
6800	mobile: true,
6801	reset: false,
6802	useDelay: 'always',
6803	viewFactor: 0.0,
6804	viewOffset: {
6805		top: 0,
6806		right: 0,
6807		bottom: 0,
6808		left: 0
6809	},
6810	afterReset: function afterReset() {},
6811	afterReveal: function afterReveal() {},
6812	beforeReset: function beforeReset() {},
6813	beforeReveal: function beforeReveal() {}
6814};
6815
6816function failure() {
6817	document.documentElement.classList.remove('sr');
6818
6819	return {
6820		clean: function clean() {},
6821		destroy: function destroy() {},
6822		reveal: function reveal() {},
6823		sync: function sync() {},
6824		get noop() {
6825			return true
6826		}
6827	}
6828}
6829
6830function success() {
6831	document.documentElement.classList.add('sr');
6832
6833	if (document.body) {
6834		document.body.style.height = '100%';
6835	} else {
6836		document.addEventListener('DOMContentLoaded', function () {
6837			document.body.style.height = '100%';
6838		});
6839	}
6840}
6841
6842var mount = { success: success, failure: failure };
6843
6844function isObject(x) {
6845	return (
6846		x !== null &&
6847		x instanceof Object &&
6848		(x.constructor === Object ||
6849			Object.prototype.toString.call(x) === '[object Object]')
6850	)
6851}
6852
6853function each(collection, callback) {
6854	if (isObject(collection)) {
6855		var keys = Object.keys(collection);
6856		return keys.forEach(function (key) { return callback(collection[key], key, collection); })
6857	}
6858	if (collection instanceof Array) {
6859		return collection.forEach(function (item, i) { return callback(item, i, collection); })
6860	}
6861	throw new TypeError('Expected either an array or object literal.')
6862}
6863
6864function logger(message) {
6865	var details = [], len = arguments.length - 1;
6866	while ( len-- > 0 ) details[ len ] = arguments[ len + 1 ];
6867
6868	if (this.constructor.debug && console) {
6869		var report = "%cScrollReveal: " + message;
6870		details.forEach(function (detail) { return (report += "\n — " + detail); });
6871		console.log(report, 'color: #ea654b;'); // eslint-disable-line no-console
6872	}
6873}
6874
6875function rinse() {
6876	var this$1 = this;
6877
6878	var struct = function () { return ({
6879		active: [],
6880		stale: []
6881	}); };
6882
6883	var elementIds = struct();
6884	var sequenceIds = struct();
6885	var containerIds = struct();
6886
6887	/**
6888	 * Take stock of active element IDs.
6889	 */
6890	try {
6891		each(Object(tealight__WEBPACK_IMPORTED_MODULE_0__["default"])('[data-sr-id]'), function (node) {
6892			var id = parseInt(node.getAttribute('data-sr-id'));
6893			elementIds.active.push(id);
6894		});
6895	} catch (e) {
6896		throw e
6897	}
6898	/**
6899	 * Destroy stale elements.
6900	 */
6901	each(this.store.elements, function (element) {
6902		if (elementIds.active.indexOf(element.id) === -1) {
6903			elementIds.stale.push(element.id);
6904		}
6905	});
6906
6907	each(elementIds.stale, function (staleId) { return delete this$1.store.elements[staleId]; });
6908
6909	/**
6910	 * Take stock of active container and sequence IDs.
6911	 */
6912	each(this.store.elements, function (element) {
6913		if (containerIds.active.indexOf(element.containerId) === -1) {
6914			containerIds.active.push(element.containerId);
6915		}
6916		if (element.hasOwnProperty('sequence')) {
6917			if (sequenceIds.active.indexOf(element.sequence.id) === -1) {
6918				sequenceIds.active.push(element.sequence.id);
6919			}
6920		}
6921	});
6922
6923	/**
6924	 * Destroy stale containers.
6925	 */
6926	each(this.store.containers, function (container) {
6927		if (containerIds.active.indexOf(container.id) === -1) {
6928			containerIds.stale.push(container.id);
6929		}
6930	});
6931
6932	each(containerIds.stale, function (staleId) {
6933		var stale = this$1.store.containers[staleId].node;
6934		stale.removeEventListener('scroll', this$1.delegate);
6935		stale.removeEventListener('resize', this$1.delegate);
6936		delete this$1.store.containers[staleId];
6937	});
6938
6939	/**
6940	 * Destroy stale sequences.
6941	 */
6942	each(this.store.sequences, function (sequence) {
6943		if (sequenceIds.active.indexOf(sequence.id) === -1) {
6944			sequenceIds.stale.push(sequence.id);
6945		}
6946	});
6947
6948	each(sequenceIds.stale, function (staleId) { return delete this$1.store.sequences[staleId]; });
6949}
6950
6951var getPrefixedCssProp = (function () {
6952	var properties = {};
6953	var style = document.documentElement.style;
6954
6955	function getPrefixedCssProperty(name, source) {
6956		if ( source === void 0 ) source = style;
6957
6958		if (name && typeof name === 'string') {
6959			if (properties[name]) {
6960				return properties[name]
6961			}
6962			if (typeof source[name] === 'string') {
6963				return (properties[name] = name)
6964			}
6965			if (typeof source[("-webkit-" + name)] === 'string') {
6966				return (properties[name] = "-webkit-" + name)
6967			}
6968			throw new RangeError(("Unable to find \"" + name + "\" style property."))
6969		}
6970		throw new TypeError('Expected a string.')
6971	}
6972
6973	getPrefixedCssProperty.clearCache = function () { return (properties = {}); };
6974
6975	return getPrefixedCssProperty
6976})();
6977
6978function style(element) {
6979	var computed = window.getComputedStyle(element.node);
6980	var position = computed.position;
6981	var config = element.config;
6982
6983	/**
6984	 * Generate inline styles
6985	 */
6986	var inline = {};
6987	var inlineStyle = element.node.getAttribute('style') || '';
6988	var inlineMatch = inlineStyle.match(/[\w-]+\s*:\s*[^;]+\s*/gi) || [];
6989
6990	inline.computed = inlineMatch ? inlineMatch.map(function (m) { return m.trim(); }).join('; ') + ';' : '';
6991
6992	inline.generated = inlineMatch.some(function (m) { return m.match(/visibility\s?:\s?visible/i); })
6993		? inline.computed
6994		: inlineMatch.concat( ['visibility: visible']).map(function (m) { return m.trim(); }).join('; ') + ';';
6995
6996	/**
6997	 * Generate opacity styles
6998	 */
6999	var computedOpacity = parseFloat(computed.opacity);
7000	var configOpacity = !isNaN(parseFloat(config.opacity))
7001		? parseFloat(config.opacity)
7002		: parseFloat(computed.opacity);
7003
7004	var opacity = {
7005		computed: computedOpacity !== configOpacity ? ("opacity: " + computedOpacity + ";") : '',
7006		generated: computedOpacity !== configOpacity ? ("opacity: " + configOpacity + ";") : ''
7007	};
7008
7009	/**
7010	 * Generate transformation styles
7011	 */
7012	var transformations = [];
7013
7014	if (parseFloat(config.distance)) {
7015		var axis = config.origin === 'top' || config.origin === 'bottom' ? 'Y' : 'X';
7016
7017		/**
7018		 * Let’s make sure our our pixel distances are negative for top and left.
7019		 * e.g. { origin: 'top', distance: '25px' } starts at `top: -25px` in CSS.
7020		 */
7021		var distance = config.distance;
7022		if (config.origin === 'top' || config.origin === 'left') {
7023			distance = /^-/.test(distance) ? distance.substr(1) : ("-" + distance);
7024		}
7025
7026		var ref = distance.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g);
7027		var value = ref[0];
7028		var unit = ref[1];
7029
7030		switch (unit) {
7031			case 'em':
7032				distance = parseInt(computed.fontSize) * value;
7033				break
7034			case 'px':
7035				distance = value;
7036				break
7037			case '%':
7038				/**
7039				 * Here we use `getBoundingClientRect` instead of
7040				 * the existing data attached to `element.geometry`
7041				 * because only the former includes any transformations
7042				 * current applied to the element.
7043				 *
7044				 * If that behavior ends up being unintuitive, this
7045				 * logic could instead utilize `element.geometry.height`
7046				 * and `element.geoemetry.width` for the distance calculation
7047				 */
7048				distance =
7049					axis === 'Y'
7050						? (element.node.getBoundingClientRect().height * value) / 100
7051						: (element.node.getBoundingClientRect().width * value) / 100;
7052				break
7053			default:
7054				throw new RangeError('Unrecognized or missing distance unit.')
7055		}
7056
7057		if (axis === 'Y') {
7058			transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["translateY"])(distance));
7059		} else {
7060			transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["translateX"])(distance));
7061		}
7062	}
7063
7064	if (config.rotate.x) { transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["rotateX"])(config.rotate.x)); }
7065	if (config.rotate.y) { transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["rotateY"])(config.rotate.y)); }
7066	if (config.rotate.z) { transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["rotateZ"])(config.rotate.z)); }
7067	if (config.scale !== 1) {
7068		if (config.scale === 0) {
7069			/**
7070			 * The CSS Transforms matrix interpolation specification
7071			 * basically disallows transitions of non-invertible
7072			 * matrixes, which means browsers won't transition
7073			 * elements with zero scale.
7074			 *
7075			 * That’s inconvenient for the API and developer
7076			 * experience, so we simply nudge their value
7077			 * slightly above zero; this allows browsers
7078			 * to transition our element as expected.
7079			 *
7080			 * `0.0002` was the smallest number
7081			 * that performed across browsers.
7082			 */
7083			transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["scale"])(0.0002));
7084		} else {
7085			transformations.push(Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["scale"])(config.scale));
7086		}
7087	}
7088
7089	var transform = {};
7090	if (transformations.length) {
7091		transform.property = getPrefixedCssProp('transform');
7092		/**
7093		 * The default computed transform value should be one of:
7094		 * undefined || 'none' || 'matrix()' || 'matrix3d()'
7095		 */
7096		transform.computed = {
7097			raw: computed[transform.property],
7098			matrix: Object(rematrix__WEBPACK_IMPORTED_MODULE_1__["parse"])(computed[transform.property])
7099		};
7100
7101		transformations.unshift(transform.computed.matrix);
7102		var product = transformations.reduce(rematrix__WEBPACK_IMPORTED_MODULE_1__["multiply"]);
7103
7104		transform.generated = {
7105			initial: ((transform.property) + ": matrix3d(" + (product.join(', ')) + ");"),
7106			final: ((transform.property) + ": matrix3d(" + (transform.computed.matrix.join(', ')) + ");")
7107		};
7108	} else {
7109		transform.generated = {
7110			initial: '',
7111			final: ''
7112		};
7113	}
7114
7115	/**
7116	 * Generate transition styles
7117	 */
7118	var transition = {};
7119	if (opacity.generated || transform.generated.initial) {
7120		transition.property = getPrefixedCssProp('transition');
7121		transition.computed = computed[transition.property];
7122		transition.fragments = [];
7123
7124		var delay = config.delay;
7125		var duration = config.duration;
7126		var easing = config.easing;
7127
7128		if (opacity.generated) {
7129			transition.fragments.push({
7130				delayed: ("opacity " + (duration / 1000) + "s " + easing + " " + (delay / 1000) + "s"),
7131				instant: ("opacity " + (duration / 1000) + "s " + easing + " 0s")
7132			});
7133		}
7134
7135		if (transform.generated.initial) {
7136			transition.fragments.push({
7137				delayed: ((transform.property) + " " + (duration / 1000) + "s " + easing + " " + (delay / 1000) + "s"),
7138				instant: ((transform.property) + " " + (duration / 1000) + "s " + easing + " 0s")
7139			});
7140		}
7141
7142		/**
7143		 * The default computed transition property should be undefined, or one of:
7144		 * '' || 'none 0s ease 0s' || 'all 0s ease 0s' || 'all 0s 0s cubic-bezier()'
7145		 */
7146		var hasCustomTransition =
7147			transition.computed && !transition.computed.match(/all 0s|none 0s/);
7148
7149		if (hasCustomTransition) {
7150			transition.fragments.unshift({
7151				delayed: transition.computed,
7152				instant: transition.computed
7153			});
7154		}
7155
7156		var composed = transition.fragments.reduce(
7157			function (composition, fragment, i) {
7158				composition.delayed += i === 0 ? fragment.delayed : (", " + (fragment.delayed));
7159				composition.instant += i === 0 ? fragment.instant : (", " + (fragment.instant));
7160				return composition
7161			},
7162			{
7163				delayed: '',
7164				instant: ''
7165			}
7166		);
7167
7168		transition.generated = {
7169			delayed: ((transition.property) + ": " + (composed.delayed) + ";"),
7170			instant: ((transition.property) + ": " + (composed.instant) + ";")
7171		};
7172	} else {
7173		transition.generated = {
7174			delayed: '',
7175			instant: ''
7176		};
7177	}
7178
7179	return {
7180		inline: inline,
7181		opacity: opacity,
7182		position: position,
7183		transform: transform,
7184		transition: transition
7185	}
7186}
7187
7188/**
7189 * apply a CSS string to an element using the CSSOM (element.style) rather
7190 * than setAttribute, which may violate the content security policy.
7191 *
7192 * @param {Node}   [el]  Element to receive styles.
7193 * @param {string} [declaration] Styles to apply.
7194 */
7195function applyStyle (el, declaration) {
7196	declaration.split(';').forEach(function (pair) {
7197		var ref = pair.split(':');
7198		var property = ref[0];
7199		var value = ref.slice(1);
7200		if (property && value) {
7201			el.style[property.trim()] = value.join(':');
7202		}
7203	});
7204}
7205
7206function clean(target) {
7207	var this$1 = this;
7208
7209	var dirty;
7210	try {
7211		each(Object(tealight__WEBPACK_IMPORTED_MODULE_0__["default"])(target), function (node) {
7212			var id = node.getAttribute('data-sr-id');
7213			if (id !== null) {
7214				dirty = true;
7215				var element = this$1.store.elements[id];
7216				if (element.callbackTimer) {
7217					window.clearTimeout(element.callbackTimer.clock);
7218				}
7219				applyStyle(element.node, element.styles.inline.generated);
7220				node.removeAttribute('data-sr-id');
7221				delete this$1.store.elements[id];
7222			}
7223		});
7224	} catch (e) {
7225		return logger.call(this, 'Clean failed.', e.message)
7226	}
7227
7228	if (dirty) {
7229		try {
7230			rinse.call(this);
7231		} catch (e) {
7232			return logger.call(this, 'Clean failed.', e.message)
7233		}
7234	}
7235}
7236
7237function destroy() {
7238	var this$1 = this;
7239
7240	/**
7241	 * Remove all generated styles and element ids
7242	 */
7243	each(this.store.elements, function (element) {
7244		applyStyle(element.node, element.styles.inline.generated);
7245		element.node.removeAttribute('data-sr-id');
7246	});
7247
7248	/**
7249	 * Remove all event listeners.
7250	 */
7251	each(this.store.containers, function (container) {
7252		var target =
7253			container.node === document.documentElement ? window : container.node;
7254		target.removeEventListener('scroll', this$1.delegate);
7255		target.removeEventListener('resize', this$1.delegate);
7256	});
7257
7258	/**
7259	 * Clear all data from the store
7260	 */
7261	this.store = {
7262		containers: {},
7263		elements: {},
7264		history: [],
7265		sequences: {}
7266	};
7267}
7268
7269function deepAssign(target) {
7270	var sources = [], len = arguments.length - 1;
7271	while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];
7272
7273	if (isObject(target)) {
7274		each(sources, function (source) {
7275			each(source, function (data, key) {
7276				if (isObject(data)) {
7277					if (!target[key] || !isObject(target[key])) {
7278						target[key] = {};
7279					}
7280					deepAssign(target[key], data);
7281				} else {
7282					target[key] = data;
7283				}
7284			});
7285		});
7286		return target
7287	} else {
7288		throw new TypeError('Target must be an object literal.')
7289	}
7290}
7291
7292function isMobile(agent) {
7293	if ( agent === void 0 ) agent = navigator.userAgent;
7294
7295	return /Android|iPhone|iPad|iPod/i.test(agent)
7296}
7297
7298var nextUniqueId = (function () {
7299	var uid = 0;
7300	return function () { return uid++; }
7301})();
7302
7303function initialize() {
7304	var this$1 = this;
7305
7306	rinse.call(this);
7307
7308	each(this.store.elements, function (element) {
7309		var styles = [element.styles.inline.generated];
7310
7311		if (element.visible) {
7312			styles.push(element.styles.opacity.computed);
7313			styles.push(element.styles.transform.generated.final);
7314			element.revealed = true;
7315		} else {
7316			styles.push(element.styles.opacity.generated);
7317			styles.push(element.styles.transform.generated.initial);
7318			element.revealed = false;
7319		}
7320
7321		applyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));
7322	});
7323
7324	each(this.store.containers, function (container) {
7325		var target =
7326			container.node === document.documentElement ? window : container.node;
7327		target.addEventListener('scroll', this$1.delegate);
7328		target.addEventListener('resize', this$1.delegate);
7329	});
7330
7331	/**
7332	 * Manually invoke delegate once to capture
7333	 * element and container dimensions, container
7334	 * scroll position, and trigger any valid reveals
7335	 */
7336	this.delegate();
7337
7338	/**
7339	 * Wipe any existing `setTimeout` now
7340	 * that initialization has completed.
7341	 */
7342	this.initTimeout = null;
7343}
7344
7345function animate(element, force) {
7346	if ( force === void 0 ) force = {};
7347
7348	var pristine = force.pristine || this.pristine;
7349	var delayed =
7350		element.config.useDelay === 'always' ||
7351		(element.config.useDelay === 'onload' && pristine) ||
7352		(element.config.useDelay === 'once' && !element.seen);
7353
7354	var shouldReveal = element.visible && !element.revealed;
7355	var shouldReset = !element.visible && element.revealed && element.config.reset;
7356
7357	if (force.reveal || shouldReveal) {
7358		return triggerReveal.call(this, element, delayed)
7359	}
7360
7361	if (force.reset || shouldReset) {
7362		return triggerReset.call(this, element)
7363	}
7364}
7365
7366function triggerReveal(element, delayed) {
7367	var styles = [
7368		element.styles.inline.generated,
7369		element.styles.opacity.computed,
7370		element.styles.transform.generated.final
7371	];
7372	if (delayed) {
7373		styles.push(element.styles.transition.generated.delayed);
7374	} else {
7375		styles.push(element.styles.transition.generated.instant);
7376	}
7377	element.revealed = element.seen = true;
7378	applyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));
7379	registerCallbacks.call(this, element, delayed);
7380}
7381
7382function triggerReset(element) {
7383	var styles = [
7384		element.styles.inline.generated,
7385		element.styles.opacity.generated,
7386		element.styles.transform.generated.initial,
7387		element.styles.transition.generated.instant
7388	];
7389	element.revealed = false;
7390	applyStyle(element.node, styles.filter(function (s) { return s !== ''; }).join(' '));
7391	registerCallbacks.call(this, element);
7392}
7393
7394function registerCallbacks(element, isDelayed) {
7395	var this$1 = this;
7396
7397	var duration = isDelayed
7398		? element.config.duration + element.config.delay
7399		: element.config.duration;
7400
7401	var beforeCallback = element.revealed
7402		? element.config.beforeReveal
7403		: element.config.beforeReset;
7404
7405	var afterCallback = element.revealed
7406		? element.config.afterReveal
7407		: element.config.afterReset;
7408
7409	var elapsed = 0;
7410	if (element.callbackTimer) {
7411		elapsed = Date.now() - element.callbackTimer.start;
7412		window.clearTimeout(element.callbackTimer.clock);
7413	}
7414
7415	beforeCallback(element.node);
7416
7417	element.callbackTimer = {
7418		start: Date.now(),
7419		clock: window.setTimeout(function () {
7420			afterCallback(element.node);
7421			element.callbackTimer = null;
7422			if (element.revealed && !element.config.reset && element.config.cleanup) {
7423				clean.call(this$1, element.node);
7424			}
7425		}, duration - elapsed)
7426	};
7427}
7428
7429function sequence(element, pristine) {
7430	if ( pristine === void 0 ) pristine = this.pristine;
7431
7432	/**
7433	 * We first check if the element should reset.
7434	 */
7435	if (!element.visible && element.revealed && element.config.reset) {
7436		return animate.call(this, element, { reset: true })
7437	}
7438
7439	var seq = this.store.sequences[element.sequence.id];
7440	var i = element.sequence.index;
7441
7442	if (seq) {
7443		var visible = new SequenceModel(seq, 'visible', this.store);
7444		var revealed = new SequenceModel(seq, 'revealed', this.store);
7445
7446		seq.models = { visible: visible, revealed: revealed };
7447
7448		/**
7449		 * If the sequence has no revealed members,
7450		 * then we reveal the first visible element
7451		 * within that sequence.
7452		 *
7453		 * The sequence then cues a recursive call
7454		 * in both directions.
7455		 */
7456		if (!revealed.body.length) {
7457			var nextId = seq.members[visible.body[0]];
7458			var nextElement = this.store.elements[nextId];
7459
7460			if (nextElement) {
7461				cue.call(this, seq, visible.body[0], -1, pristine);
7462				cue.call(this, seq, visible.body[0], +1, pristine);
7463				return animate.call(this, nextElement, { reveal: true, pristine: pristine })
7464			}
7465		}
7466
7467		/**
7468		 * If our element isn’t resetting, we check the
7469		 * element sequence index against the head, and
7470		 * then the foot of the sequence.
7471		 */
7472		if (
7473			!seq.blocked.head &&
7474			i === [].concat( revealed.head ).pop() &&
7475			i >= [].concat( visible.body ).shift()
7476		) {
7477			cue.call(this, seq, i, -1, pristine);
7478			return animate.call(this, element, { reveal: true, pristine: pristine })
7479		}
7480
7481		if (
7482			!seq.blocked.foot &&
7483			i === [].concat( revealed.foot ).shift() &&
7484			i <= [].concat( visible.body ).pop()
7485		) {
7486			cue.call(this, seq, i, +1, pristine);
7487			return animate.call(this, element, { reveal: true, pristine: pristine })
7488		}
7489	}
7490}
7491
7492function Sequence(interval) {
7493	var i = Math.abs(interval);
7494	if (!isNaN(i)) {
7495		this.id = nextUniqueId();
7496		this.interval = Math.max(i, 16);
7497		this.members = [];
7498		this.models = {};
7499		this.blocked = {
7500			head: false,
7501			foot: false
7502		};
7503	} else {
7504		throw new RangeError('Invalid sequence interval.')
7505	}
7506}
7507
7508function SequenceModel(seq, prop, store) {
7509	var this$1 = this;
7510
7511	this.head = [];
7512	this.body = [];
7513	this.foot = [];
7514
7515	each(seq.members, function (id, index) {
7516		var element = store.elements[id];
7517		if (element && element[prop]) {
7518			this$1.body.push(index);
7519		}
7520	});
7521
7522	if (this.body.length) {
7523		each(seq.members, function (id, index) {
7524			var element = store.elements[id];
7525			if (element && !element[prop]) {
7526				if (index < this$1.body[0]) {
7527					this$1.head.push(index);
7528				} else {
7529					this$1.foot.push(index);
7530				}
7531			}
7532		});
7533	}
7534}
7535
7536function cue(seq, i, direction, pristine) {
7537	var this$1 = this;
7538
7539	var blocked = ['head', null, 'foot'][1 + direction];
7540	var nextId = seq.members[i + direction];
7541	var nextElement = this.store.elements[nextId];
7542
7543	seq.blocked[blocked] = true;
7544
7545	setTimeout(function () {
7546		seq.blocked[blocked] = false;
7547		if (nextElement) {
7548			sequence.call(this$1, nextElement, pristine);
7549		}
7550	}, seq.interval);
7551}
7552
7553function reveal(target, options, syncing) {
7554	var this$1 = this;
7555	if ( options === void 0 ) options = {};
7556	if ( syncing === void 0 ) syncing = false;
7557
7558	var containerBuffer = [];
7559	var sequence$$1;
7560	var interval = options.interval || defaults.interval;
7561
7562	try {
7563		if (interval) {
7564			sequence$$1 = new Sequence(interval);
7565		}
7566
7567		var nodes = Object(tealight__WEBPACK_IMPORTED_MODULE_0__["default"])(target);
7568		if (!nodes.length) {
7569			throw new Error('Invalid reveal target.')
7570		}
7571
7572		var elements = nodes.reduce(function (elementBuffer, elementNode) {
7573			var element = {};
7574			var existingId = elementNode.getAttribute('data-sr-id');
7575
7576			if (existingId) {
7577				deepAssign(element, this$1.store.elements[existingId]);
7578
7579				/**
7580				 * In order to prevent previously generated styles
7581				 * from throwing off the new styles, the style tag
7582				 * has to be reverted to its pre-reveal state.
7583				 */
7584				applyStyle(element.node, element.styles.inline.computed);
7585			} else {
7586				element.id = nextUniqueId();
7587				element.node = elementNode;
7588				element.seen = false;
7589				element.revealed = false;
7590				element.visible = false;
7591			}
7592
7593			var config = deepAssign({}, element.config || this$1.defaults, options);
7594
7595			if ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {
7596				if (existingId) {
7597					clean.call(this$1, element);
7598				}
7599				return elementBuffer // skip elements that are disabled
7600			}
7601
7602			var containerNode = Object(tealight__WEBPACK_IMPORTED_MODULE_0__["default"])(config.container)[0];
7603			if (!containerNode) {
7604				throw new Error('Invalid container.')
7605			}
7606			if (!containerNode.contains(elementNode)) {
7607				return elementBuffer // skip elements found outside the container
7608			}
7609
7610			var containerId;
7611			{
7612				containerId = getContainerId(
7613					containerNode,
7614					containerBuffer,
7615					this$1.store.containers
7616				);
7617				if (containerId === null) {
7618					containerId = nextUniqueId();
7619					containerBuffer.push({ id: containerId, node: containerNode });
7620				}
7621			}
7622
7623			element.config = config;
7624			element.containerId = containerId;
7625			element.styles = style(element);
7626
7627			if (sequence$$1) {
7628				element.sequence = {
7629					id: sequence$$1.id,
7630					index: sequence$$1.members.length
7631				};
7632				sequence$$1.members.push(element.id);
7633			}
7634
7635			elementBuffer.push(element);
7636			return elementBuffer
7637		}, []);
7638
7639		/**
7640		 * Modifying the DOM via setAttribute needs to be handled
7641		 * separately from reading computed styles in the map above
7642		 * for the browser to batch DOM changes (limiting reflows)
7643		 */
7644		each(elements, function (element) {
7645			this$1.store.elements[element.id] = element;
7646			element.node.setAttribute('data-sr-id', element.id);
7647		});
7648	} catch (e) {
7649		return logger.call(this, 'Reveal failed.', e.message)
7650	}
7651
7652	/**
7653	 * Now that element set-up is complete...
7654	 * Let’s commit any container and sequence data we have to the store.
7655	 */
7656	each(containerBuffer, function (container) {
7657		this$1.store.containers[container.id] = {
7658			id: container.id,
7659			node: container.node
7660		};
7661	});
7662	if (sequence$$1) {
7663		this.store.sequences[sequence$$1.id] = sequence$$1;
7664	}
7665
7666	/**
7667	 * If reveal wasn't invoked by sync, we want to
7668	 * make sure to add this call to the history.
7669	 */
7670	if (syncing !== true) {
7671		this.store.history.push({ target: target, options: options });
7672
7673		/**
7674		 * Push initialization to the event queue, giving
7675		 * multiple reveal calls time to be interpreted.
7676		 */
7677		if (this.initTimeout) {
7678			window.clearTimeout(this.initTimeout);
7679		}
7680		this.initTimeout = window.setTimeout(initialize.bind(this), 0);
7681	}
7682}
7683
7684function getContainerId(node) {
7685	var collections = [], len = arguments.length - 1;
7686	while ( len-- > 0 ) collections[ len ] = arguments[ len + 1 ];
7687
7688	var id = null;
7689	each(collections, function (collection) {
7690		each(collection, function (container) {
7691			if (id === null && container.node === node) {
7692				id = container.id;
7693			}
7694		});
7695	});
7696	return id
7697}
7698
7699/**
7700 * Re-runs the reveal method for each record stored in history,
7701 * for capturing new content asynchronously loaded into the DOM.
7702 */
7703function sync() {
7704	var this$1 = this;
7705
7706	each(this.store.history, function (record) {
7707		reveal.call(this$1, record.target, record.options, true);
7708	});
7709
7710	initialize.call(this);
7711}
7712
7713var polyfill = function (x) { return (x > 0) - (x < 0) || +x; };
7714var mathSign = Math.sign || polyfill;
7715
7716function getGeometry(target, isContainer) {
7717	/**
7718	 * We want to ignore padding and scrollbars for container elements.
7719	 * More information here: https://goo.gl/vOZpbz
7720	 */
7721	var height = isContainer ? target.node.clientHeight : target.node.offsetHeight;
7722	var width = isContainer ? target.node.clientWidth : target.node.offsetWidth;
7723
7724	var offsetTop = 0;
7725	var offsetLeft = 0;
7726	var node = target.node;
7727
7728	do {
7729		if (!isNaN(node.offsetTop)) {
7730			offsetTop += node.offsetTop;
7731		}
7732		if (!isNaN(node.offsetLeft)) {
7733			offsetLeft += node.offsetLeft;
7734		}
7735		node = node.offsetParent;
7736	} while (node)
7737
7738	return {
7739		bounds: {
7740			top: offsetTop,
7741			right: offsetLeft + width,
7742			bottom: offsetTop + height,
7743			left: offsetLeft
7744		},
7745		height: height,
7746		width: width
7747	}
7748}
7749
7750function getScrolled(container) {
7751	var top, left;
7752	if (container.node === document.documentElement) {
7753		top = window.pageYOffset;
7754		left = window.pageXOffset;
7755	} else {
7756		top = container.node.scrollTop;
7757		left = container.node.scrollLeft;
7758	}
7759	return { top: top, left: left }
7760}
7761
7762function isElementVisible(element) {
7763	if ( element === void 0 ) element = {};
7764
7765	var container = this.store.containers[element.containerId];
7766	if (!container) { return }
7767
7768	var viewFactor = Math.max(0, Math.min(1, element.config.viewFactor));
7769	var viewOffset = element.config.viewOffset;
7770
7771	var elementBounds = {
7772		top: element.geometry.bounds.top + element.geometry.height * viewFactor,
7773		right: element.geometry.bounds.right - element.geometry.width * viewFactor,
7774		bottom: element.geometry.bounds.bottom - element.geometry.height * viewFactor,
7775		left: element.geometry.bounds.left + element.geometry.width * viewFactor
7776	};
7777
7778	var containerBounds = {
7779		top: container.geometry.bounds.top + container.scroll.top + viewOffset.top,
7780		right: container.geometry.bounds.right + container.scroll.left - viewOffset.right,
7781		bottom:
7782			container.geometry.bounds.bottom + container.scroll.top - viewOffset.bottom,
7783		left: container.geometry.bounds.left + container.scroll.left + viewOffset.left
7784	};
7785
7786	return (
7787		(elementBounds.top < containerBounds.bottom &&
7788			elementBounds.right > containerBounds.left &&
7789			elementBounds.bottom > containerBounds.top &&
7790			elementBounds.left < containerBounds.right) ||
7791		element.styles.position === 'fixed'
7792	)
7793}
7794
7795function delegate(
7796	event,
7797	elements
7798) {
7799	var this$1 = this;
7800	if ( event === void 0 ) event = { type: 'init' };
7801	if ( elements === void 0 ) elements = this.store.elements;
7802
7803	Object(miniraf__WEBPACK_IMPORTED_MODULE_2__["default"])(function () {
7804		var stale = event.type === 'init' || event.type === 'resize';
7805
7806		each(this$1.store.containers, function (container) {
7807			if (stale) {
7808				container.geometry = getGeometry.call(this$1, container, true);
7809			}
7810			var scroll = getScrolled.call(this$1, container);
7811			if (container.scroll) {
7812				container.direction = {
7813					x: mathSign(scroll.left - container.scroll.left),
7814					y: mathSign(scroll.top - container.scroll.top)
7815				};
7816			}
7817			container.scroll = scroll;
7818		});
7819
7820		/**
7821		 * Due to how the sequencer is implemented, it’s
7822		 * important that we update the state of all
7823		 * elements, before any animation logic is
7824		 * evaluated (in the second loop below).
7825		 */
7826		each(elements, function (element) {
7827			if (stale || element.geometry === undefined) {
7828				element.geometry = getGeometry.call(this$1, element);
7829			}
7830			element.visible = isElementVisible.call(this$1, element);
7831		});
7832
7833		each(elements, function (element) {
7834			if (element.sequence) {
7835				sequence.call(this$1, element);
7836			} else {
7837				animate.call(this$1, element);
7838			}
7839		});
7840
7841		this$1.pristine = false;
7842	});
7843}
7844
7845function isTransformSupported() {
7846	var style = document.documentElement.style;
7847	return 'transform' in style || 'WebkitTransform' in style
7848}
7849
7850function isTransitionSupported() {
7851	var style = document.documentElement.style;
7852	return 'transition' in style || 'WebkitTransition' in style
7853}
7854
7855var version = "4.0.9";
7856
7857var boundDelegate;
7858var boundDestroy;
7859var boundReveal;
7860var boundClean;
7861var boundSync;
7862var config;
7863var debug;
7864var instance;
7865
7866function ScrollReveal(options) {
7867	if ( options === void 0 ) options = {};
7868
7869	var invokedWithoutNew =
7870		typeof this === 'undefined' ||
7871		Object.getPrototypeOf(this) !== ScrollReveal.prototype;
7872
7873	if (invokedWithoutNew) {
7874		return new ScrollReveal(options)
7875	}
7876
7877	if (!ScrollReveal.isSupported()) {
7878		logger.call(this, 'Instantiation failed.', 'This browser is not supported.');
7879		return mount.failure()
7880	}
7881
7882	var buffer;
7883	try {
7884		buffer = config
7885			? deepAssign({}, config, options)
7886			: deepAssign({}, defaults, options);
7887	} catch (e) {
7888		logger.call(this, 'Invalid configuration.', e.message);
7889		return mount.failure()
7890	}
7891
7892	try {
7893		var container = Object(tealight__WEBPACK_IMPORTED_MODULE_0__["default"])(buffer.container)[0];
7894		if (!container) {
7895			throw new Error('Invalid container.')
7896		}
7897	} catch (e) {
7898		logger.call(this, e.message);
7899		return mount.failure()
7900	}
7901
7902	config = buffer;
7903
7904	if ((!config.mobile && isMobile()) || (!config.desktop && !isMobile())) {
7905		logger.call(
7906			this,
7907			'This device is disabled.',
7908			("desktop: " + (config.desktop)),
7909			("mobile: " + (config.mobile))
7910		);
7911		return mount.failure()
7912	}
7913
7914	mount.success();
7915
7916	this.store = {
7917		containers: {},
7918		elements: {},
7919		history: [],
7920		sequences: {}
7921	};
7922
7923	this.pristine = true;
7924
7925	boundDelegate = boundDelegate || delegate.bind(this);
7926	boundDestroy = boundDestroy || destroy.bind(this);
7927	boundReveal = boundReveal || reveal.bind(this);
7928	boundClean = boundClean || clean.bind(this);
7929	boundSync = boundSync || sync.bind(this);
7930
7931	Object.defineProperty(this, 'delegate', { get: function () { return boundDelegate; } });
7932	Object.defineProperty(this, 'destroy', { get: function () { return boundDestroy; } });
7933	Object.defineProperty(this, 'reveal', { get: function () { return boundReveal; } });
7934	Object.defineProperty(this, 'clean', { get: function () { return boundClean; } });
7935	Object.defineProperty(this, 'sync', { get: function () { return boundSync; } });
7936
7937	Object.defineProperty(this, 'defaults', { get: function () { return config; } });
7938	Object.defineProperty(this, 'version', { get: function () { return version; } });
7939	Object.defineProperty(this, 'noop', { get: function () { return false; } });
7940
7941	return instance ? instance : (instance = this)
7942}
7943
7944ScrollReveal.isSupported = function () { return isTransformSupported() && isTransitionSupported(); };
7945
7946Object.defineProperty(ScrollReveal, 'debug', {
7947	get: function () { return debug || false; },
7948	set: function (value) { return (debug = typeof value === 'boolean' ? value : debug); }
7949});
7950
7951ScrollReveal();
7952
7953/* harmony default export */ __webpack_exports__["default"] = (ScrollReveal);
7954
7955
7956/***/ }),
7957
vendor: 3,811 bytes, lines 7958-8104
7958/***/ "./node_modules/ssr-window/dist/ssr-window.esm.js":
7959/*!********************************************************!*\
7960  !*** ./node_modules/ssr-window/dist/ssr-window.esm.js ***!
7961  \********************************************************/
7962/*! exports provided: document, extend, window */
7963/***/ (function(module, __webpack_exports__, __webpack_require__) {
7964
7965"use strict";
7966__webpack_require__.r(__webpack_exports__);
7967/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "document", function() { return doc; });
7968/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
7969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return win; });
7970/**
7971 * SSR Window 2.0.0
7972 * Better handling for window object in SSR environment
7973 * https://github.com/nolimits4web/ssr-window
7974 *
7975 * Copyright 2020, Vladimir Kharlampidi
7976 *
7977 * Licensed under MIT
7978 *
7979 * Released on: May 12, 2020
7980 */
7981/* eslint-disable no-param-reassign */
7982function isObject(obj) {
7983    return (obj !== null &&
7984        typeof obj === 'object' &&
7985        'constructor' in obj &&
7986        obj.constructor === Object);
7987}
7988function extend(target, src) {
7989    if (target === void 0) { target = {}; }
7990    if (src === void 0) { src = {}; }
7991    Object.keys(src).forEach(function (key) {
7992        if (typeof target[key] === 'undefined')
7993            target[key] = src[key];
7994        else if (isObject(src[key]) &&
7995            isObject(target[key]) &&
7996            Object.keys(src[key]).length > 0) {
7997            extend(target[key], src[key]);
7998        }
7999    });
8000}
8001
8002var doc = typeof document !== 'undefined' ? document : {};
8003var ssrDocument = {
8004    body: {},
8005    addEventListener: function () { },
8006    removeEventListener: function () { },
8007    activeElement: {
8008        blur: function () { },
8009        nodeName: '',
8010    },
8011    querySelector: function () {
8012        return null;
8013    },
8014    querySelectorAll: function () {
8015        return [];
8016    },
8017    getElementById: function () {
8018        return null;
8019    },
8020    createEvent: function () {
8021        return {
8022            initEvent: function () { },
8023        };
8024    },
8025    createElement: function () {
8026        return {
8027            children: [],
8028            childNodes: [],
8029            style: {},
8030            setAttribute: function () { },
8031            getElementsByTagName: function () {
8032                return [];
8033            },
8034        };
8035    },
8036    createElementNS: function () {
8037        return {};
8038    },
8039    importNode: function () {
8040        return null;
8041    },
8042    location: {
8043        hash: '',
8044        host: '',
8045        hostname: '',
8046        href: '',
8047        origin: '',
8048        pathname: '',
8049        protocol: '',
8050        search: '',
8051    },
8052};
8053extend(doc, ssrDocument);
8054
8055var win = typeof window !== 'undefined' ? window : {};
8056var ssrWindow = {
8057    document: ssrDocument,
8058    navigator: {
8059        userAgent: '',
8060    },
8061    location: {
8062        hash: '',
8063        host: '',
8064        hostname: '',
8065        href: '',
8066        origin: '',
8067        pathname: '',
8068        protocol: '',
8069        search: '',
8070    },
8071    history: {
8072        replaceState: function () { },
8073        pushState: function () { },
8074        go: function () { },
8075        back: function () { },
8076    },
8077    CustomEvent: function CustomEvent() {
8078        return this;
8079    },
8080    addEventListener: function () { },
8081    removeEventListener: function () { },
8082    getComputedStyle: function () {
8083        return {
8084            getPropertyValue: function () {
8085                return '';
8086            },
8087        };
8088    },
8089    Image: function () { },
8090    Date: function () { },
8091    screen: {},
8092    setTimeout: function () { },
8093    clearTimeout: function () { },
8094    matchMedia: function () {
8095        return {};
8096    },
8097};
8098extend(win, ssrWindow);
8099
8100
8101
8102
8103/***/ }),
8104
vendor: 264,648 bytes, lines 8105-15881
8105/***/ "./node_modules/swiper/js/swiper.esm.bundle.js":
8106/*!*****************************************************!*\
8107  !*** ./node_modules/swiper/js/swiper.esm.bundle.js ***!
8108  \*****************************************************/
8109/*! exports provided: default */
8110/***/ (function(module, __webpack_exports__, __webpack_require__) {
8111
8112"use strict";
8113__webpack_require__.r(__webpack_exports__);
8114/* harmony import */ var dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7/dist/dom7.modular */ "./node_modules/dom7/dist/dom7.modular.js");
8115/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/dist/ssr-window.esm.js");
8116/**
8117 * Swiper 5.4.5
8118 * Most modern mobile touch slider and framework with hardware accelerated transitions
8119 * http://swiperjs.com
8120 *
8121 * Copyright 2014-2020 Vladimir Kharlampidi
8122 *
8123 * Released under the MIT License
8124 *
8125 * Released on: June 16, 2020
8126 */
8127
8128
8129
8130
8131const Methods = {
8132  addClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["addClass"],
8133  removeClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["removeClass"],
8134  hasClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["hasClass"],
8135  toggleClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["toggleClass"],
8136  attr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["attr"],
8137  removeAttr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["removeAttr"],
8138  data: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["data"],
8139  transform: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transform"],
8140  transition: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transition"],
8141  on: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["on"],
8142  off: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["off"],
8143  trigger: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["trigger"],
8144  transitionEnd: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["transitionEnd"],
8145  outerWidth: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["outerWidth"],
8146  outerHeight: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["outerHeight"],
8147  offset: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["offset"],
8148  css: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["css"],
8149  each: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["each"],
8150  html: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["html"],
8151  text: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["text"],
8152  is: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["is"],
8153  index: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["index"],
8154  eq: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["eq"],
8155  append: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["append"],
8156  prepend: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prepend"],
8157  next: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["next"],
8158  nextAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["nextAll"],
8159  prev: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prev"],
8160  prevAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["prevAll"],
8161  parent: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["parent"],
8162  parents: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["parents"],
8163  closest: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["closest"],
8164  find: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["find"],
8165  children: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["children"],
8166  filter: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["filter"],
8167  remove: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["remove"],
8168  add: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["add"],
8169  styles: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["styles"],
8170};
8171
8172Object.keys(Methods).forEach((methodName) => {
8173  dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"].fn[methodName] = dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"].fn[methodName] || Methods[methodName];
8174});
8175
8176const Utils = {
8177  deleteProps(obj) {
8178    const object = obj;
8179    Object.keys(object).forEach((key) => {
8180      try {
8181        object[key] = null;
8182      } catch (e) {
8183        // no getter for object
8184      }
8185      try {
8186        delete object[key];
8187      } catch (e) {
8188        // something got wrong
8189      }
8190    });
8191  },
8192  nextTick(callback, delay = 0) {
8193    return setTimeout(callback, delay);
8194  },
8195  now() {
8196    return Date.now();
8197  },
8198  getTranslate(el, axis = 'x') {
8199    let matrix;
8200    let curTransform;
8201    let transformMatrix;
8202
8203    const curStyle = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].getComputedStyle(el, null);
8204
8205    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) {
8206      curTransform = curStyle.transform || curStyle.webkitTransform;
8207      if (curTransform.split(',').length > 6) {
8208        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');
8209      }
8210      // Some old versions of Webkit choke when 'none' is passed; pass
8211      // empty string instead in this case
8212      transformMatrix = new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
8213    } else {
8214      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
8215      matrix = transformMatrix.toString().split(',');
8216    }
8217
8218    if (axis === 'x') {
8219      // Latest Chrome and webkits Fix
8220      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) curTransform = transformMatrix.m41;
8221      // Crazy IE10 Matrix
8222      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
8223      // Normal Browsers
8224      else curTransform = parseFloat(matrix[4]);
8225    }
8226    if (axis === 'y') {
8227      // Latest Chrome and webkits Fix
8228      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebKitCSSMatrix) curTransform = transformMatrix.m42;
8229      // Crazy IE10 Matrix
8230      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
8231      // Normal Browsers
8232      else curTransform = parseFloat(matrix[5]);
8233    }
8234    return curTransform || 0;
8235  },
8236  parseUrlQuery(url) {
8237    const query = {};
8238    let urlToParse = url || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.href;
8239    let i;
8240    let params;
8241    let param;
8242    let length;
8243    if (typeof urlToParse === 'string' && urlToParse.length) {
8244      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
8245      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');
8246      length = params.length;
8247
8248      for (i = 0; i < length; i += 1) {
8249        param = params[i].replace(/#\S+/g, '').split('=');
8250        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
8251      }
8252    }
8253    return query;
8254  },
8255  isObject(o) {
8256    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
8257  },
8258  extend(...args) {
8259    const to = Object(args[0]);
8260    for (let i = 1; i < args.length; i += 1) {
8261      const nextSource = args[i];
8262      if (nextSource !== undefined && nextSource !== null) {
8263        const keysArray = Object.keys(Object(nextSource));
8264        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
8265          const nextKey = keysArray[nextIndex];
8266          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
8267          if (desc !== undefined && desc.enumerable) {
8268            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
8269              Utils.extend(to[nextKey], nextSource[nextKey]);
8270            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
8271              to[nextKey] = {};
8272              Utils.extend(to[nextKey], nextSource[nextKey]);
8273            } else {
8274              to[nextKey] = nextSource[nextKey];
8275            }
8276          }
8277        }
8278      }
8279    }
8280    return to;
8281  },
8282};
8283
8284const Support = (function Support() {
8285  return {
8286    touch: !!(('ontouchstart' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]) || (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].DocumentTouch && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"] instanceof ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].DocumentTouch)),
8287
8288    pointerEvents: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].PointerEvent && ('maxTouchPoints' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator) && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.maxTouchPoints >= 0,
8289
8290    observer: (function checkObserver() {
8291      return ('MutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"] || 'WebkitMutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]);
8292    }()),
8293
8294    passiveListener: (function checkPassiveListener() {
8295      let supportsPassive = false;
8296      try {
8297        const opts = Object.defineProperty({}, 'passive', {
8298          // eslint-disable-next-line
8299          get() {
8300            supportsPassive = true;
8301          },
8302        });
8303        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('testPassiveListener', null, opts);
8304      } catch (e) {
8305        // No support
8306      }
8307      return supportsPassive;
8308    }()),
8309
8310    gestures: (function checkGestures() {
8311      return 'ongesturestart' in ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"];
8312    }()),
8313  };
8314}());
8315
8316class SwiperClass {
8317  constructor(params = {}) {
8318    const self = this;
8319    self.params = params;
8320
8321    // Events
8322    self.eventsListeners = {};
8323
8324    if (self.params && self.params.on) {
8325      Object.keys(self.params.on).forEach((eventName) => {
8326        self.on(eventName, self.params.on[eventName]);
8327      });
8328    }
8329  }
8330
8331  on(events, handler, priority) {
8332    const self = this;
8333    if (typeof handler !== 'function') return self;
8334    const method = priority ? 'unshift' : 'push';
8335    events.split(' ').forEach((event) => {
8336      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
8337      self.eventsListeners[event][method](handler);
8338    });
8339    return self;
8340  }
8341
8342  once(events, handler, priority) {
8343    const self = this;
8344    if (typeof handler !== 'function') return self;
8345    function onceHandler(...args) {
8346      self.off(events, onceHandler);
8347      if (onceHandler.f7proxy) {
8348        delete onceHandler.f7proxy;
8349      }
8350      handler.apply(self, args);
8351    }
8352    onceHandler.f7proxy = handler;
8353    return self.on(events, onceHandler, priority);
8354  }
8355
8356  off(events, handler) {
8357    const self = this;
8358    if (!self.eventsListeners) return self;
8359    events.split(' ').forEach((event) => {
8360      if (typeof handler === 'undefined') {
8361        self.eventsListeners[event] = [];
8362      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
8363        self.eventsListeners[event].forEach((eventHandler, index) => {
8364          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
8365            self.eventsListeners[event].splice(index, 1);
8366          }
8367        });
8368      }
8369    });
8370    return self;
8371  }
8372
8373  emit(...args) {
8374    const self = this;
8375    if (!self.eventsListeners) return self;
8376    let events;
8377    let data;
8378    let context;
8379    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
8380      events = args[0];
8381      data = args.slice(1, args.length);
8382      context = self;
8383    } else {
8384      events = args[0].events;
8385      data = args[0].data;
8386      context = args[0].context || self;
8387    }
8388    const eventsArray = Array.isArray(events) ? events : events.split(' ');
8389    eventsArray.forEach((event) => {
8390      if (self.eventsListeners && self.eventsListeners[event]) {
8391        const handlers = [];
8392        self.eventsListeners[event].forEach((eventHandler) => {
8393          handlers.push(eventHandler);
8394        });
8395        handlers.forEach((eventHandler) => {
8396          eventHandler.apply(context, data);
8397        });
8398      }
8399    });
8400    return self;
8401  }
8402
8403  useModulesParams(instanceParams) {
8404    const instance = this;
8405    if (!instance.modules) return;
8406    Object.keys(instance.modules).forEach((moduleName) => {
8407      const module = instance.modules[moduleName];
8408      // Extend params
8409      if (module.params) {
8410        Utils.extend(instanceParams, module.params);
8411      }
8412    });
8413  }
8414
8415  useModules(modulesParams = {}) {
8416    const instance = this;
8417    if (!instance.modules) return;
8418    Object.keys(instance.modules).forEach((moduleName) => {
8419      const module = instance.modules[moduleName];
8420      const moduleParams = modulesParams[moduleName] || {};
8421      // Extend instance methods and props
8422      if (module.instance) {
8423        Object.keys(module.instance).forEach((modulePropName) => {
8424          const moduleProp = module.instance[modulePropName];
8425          if (typeof moduleProp === 'function') {
8426            instance[modulePropName] = moduleProp.bind(instance);
8427          } else {
8428            instance[modulePropName] = moduleProp;
8429          }
8430        });
8431      }
8432      // Add event listeners
8433      if (module.on && instance.on) {
8434        Object.keys(module.on).forEach((moduleEventName) => {
8435          instance.on(moduleEventName, module.on[moduleEventName]);
8436        });
8437      }
8438
8439      // Module create callback
8440      if (module.create) {
8441        module.create.bind(instance)(moduleParams);
8442      }
8443    });
8444  }
8445
8446  static set components(components) {
8447    const Class = this;
8448    if (!Class.use) return;
8449    Class.use(components);
8450  }
8451
8452  static installModule(module, ...params) {
8453    const Class = this;
8454    if (!Class.prototype.modules) Class.prototype.modules = {};
8455    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);
8456    Class.prototype.modules[name] = module;
8457    // Prototype
8458    if (module.proto) {
8459      Object.keys(module.proto).forEach((key) => {
8460        Class.prototype[key] = module.proto[key];
8461      });
8462    }
8463    // Class
8464    if (module.static) {
8465      Object.keys(module.static).forEach((key) => {
8466        Class[key] = module.static[key];
8467      });
8468    }
8469    // Callback
8470    if (module.install) {
8471      module.install.apply(Class, params);
8472    }
8473    return Class;
8474  }
8475
8476  static use(module, ...params) {
8477    const Class = this;
8478    if (Array.isArray(module)) {
8479      module.forEach((m) => Class.installModule(m));
8480      return Class;
8481    }
8482    return Class.installModule(module, ...params);
8483  }
8484}
8485
8486function updateSize () {
8487  const swiper = this;
8488  let width;
8489  let height;
8490  const $el = swiper.$el;
8491  if (typeof swiper.params.width !== 'undefined') {
8492    width = swiper.params.width;
8493  } else {
8494    width = $el[0].clientWidth;
8495  }
8496  if (typeof swiper.params.height !== 'undefined') {
8497    height = swiper.params.height;
8498  } else {
8499    height = $el[0].clientHeight;
8500  }
8501  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
8502    return;
8503  }
8504
8505  // Subtract paddings
8506  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
8507  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
8508
8509  Utils.extend(swiper, {
8510    width,
8511    height,
8512    size: swiper.isHorizontal() ? width : height,
8513  });
8514}
8515
8516function updateSlides () {
8517  const swiper = this;
8518  const params = swiper.params;
8519
8520  const {
8521    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,
8522  } = swiper;
8523  const isVirtual = swiper.virtual && params.virtual.enabled;
8524  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
8525  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
8526  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
8527  let snapGrid = [];
8528  const slidesGrid = [];
8529  const slidesSizesGrid = [];
8530
8531  function slidesForMargin(slideIndex) {
8532    if (!params.cssMode) return true;
8533    if (slideIndex === slides.length - 1) {
8534      return false;
8535    }
8536    return true;
8537  }
8538
8539  let offsetBefore = params.slidesOffsetBefore;
8540  if (typeof offsetBefore === 'function') {
8541    offsetBefore = params.slidesOffsetBefore.call(swiper);
8542  }
8543
8544  let offsetAfter = params.slidesOffsetAfter;
8545  if (typeof offsetAfter === 'function') {
8546    offsetAfter = params.slidesOffsetAfter.call(swiper);
8547  }
8548
8549  const previousSnapGridLength = swiper.snapGrid.length;
8550  const previousSlidesGridLength = swiper.snapGrid.length;
8551
8552  let spaceBetween = params.spaceBetween;
8553  let slidePosition = -offsetBefore;
8554  let prevSlideSize = 0;
8555  let index = 0;
8556  if (typeof swiperSize === 'undefined') {
8557    return;
8558  }
8559  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
8560    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
8561  }
8562
8563  swiper.virtualSize = -spaceBetween;
8564
8565  // reset margins
8566  if (rtl) slides.css({ marginLeft: '', marginTop: '' });
8567  else slides.css({ marginRight: '', marginBottom: '' });
8568
8569  let slidesNumberEvenToRows;
8570  if (params.slidesPerColumn > 1) {
8571    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
8572      slidesNumberEvenToRows = slidesLength;
8573    } else {
8574      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
8575    }
8576    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
8577      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
8578    }
8579  }
8580
8581  // Calc slides
8582  let slideSize;
8583  const slidesPerColumn = params.slidesPerColumn;
8584  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
8585  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
8586  for (let i = 0; i < slidesLength; i += 1) {
8587    slideSize = 0;
8588    const slide = slides.eq(i);
8589    if (params.slidesPerColumn > 1) {
8590      // Set slides order
8591      let newSlideOrderIndex;
8592      let column;
8593      let row;
8594      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
8595        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
8596        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
8597        const columnsInGroup = groupIndex === 0
8598          ? params.slidesPerGroup
8599          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
8600        row = Math.floor(slideIndexInGroup / columnsInGroup);
8601        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;
8602
8603        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
8604        slide
8605          .css({
8606            '-webkit-box-ordinal-group': newSlideOrderIndex,
8607            '-moz-box-ordinal-group': newSlideOrderIndex,
8608            '-ms-flex-order': newSlideOrderIndex,
8609            '-webkit-order': newSlideOrderIndex,
8610            order: newSlideOrderIndex,
8611          });
8612      } else if (params.slidesPerColumnFill === 'column') {
8613        column = Math.floor(i / slidesPerColumn);
8614        row = i - (column * slidesPerColumn);
8615        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
8616          row += 1;
8617          if (row >= slidesPerColumn) {
8618            row = 0;
8619            column += 1;
8620          }
8621        }
8622      } else {
8623        row = Math.floor(i / slidesPerRow);
8624        column = i - (row * slidesPerRow);
8625      }
8626      slide.css(
8627        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,
8628        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)
8629      );
8630    }
8631    if (slide.css('display') === 'none') continue; // eslint-disable-line
8632
8633    if (params.slidesPerView === 'auto') {
8634      const slideStyles = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].getComputedStyle(slide[0], null);
8635      const currentTransform = slide[0].style.transform;
8636      const currentWebKitTransform = slide[0].style.webkitTransform;
8637      if (currentTransform) {
8638        slide[0].style.transform = 'none';
8639      }
8640      if (currentWebKitTransform) {
8641        slide[0].style.webkitTransform = 'none';
8642      }
8643      if (params.roundLengths) {
8644        slideSize = swiper.isHorizontal()
8645          ? slide.outerWidth(true)
8646          : slide.outerHeight(true);
8647      } else {
8648        // eslint-disable-next-line
8649        if (swiper.isHorizontal()) {
8650          const width = parseFloat(slideStyles.getPropertyValue('width'));
8651          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
8652          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
8653          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
8654          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
8655          const boxSizing = slideStyles.getPropertyValue('box-sizing');
8656          if (boxSizing && boxSizing === 'border-box') {
8657            slideSize = width + marginLeft + marginRight;
8658          } else {
8659            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
8660          }
8661        } else {
8662          const height = parseFloat(slideStyles.getPropertyValue('height'));
8663          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
8664          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
8665          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
8666          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
8667          const boxSizing = slideStyles.getPropertyValue('box-sizing');
8668          if (boxSizing && boxSizing === 'border-box') {
8669            slideSize = height + marginTop + marginBottom;
8670          } else {
8671            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
8672          }
8673        }
8674      }
8675      if (currentTransform) {
8676        slide[0].style.transform = currentTransform;
8677      }
8678      if (currentWebKitTransform) {
8679        slide[0].style.webkitTransform = currentWebKitTransform;
8680      }
8681      if (params.roundLengths) slideSize = Math.floor(slideSize);
8682    } else {
8683      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
8684      if (params.roundLengths) slideSize = Math.floor(slideSize);
8685
8686      if (slides[i]) {
8687        if (swiper.isHorizontal()) {
8688          slides[i].style.width = `${slideSize}px`;
8689        } else {
8690          slides[i].style.height = `${slideSize}px`;
8691        }
8692      }
8693    }
8694    if (slides[i]) {
8695      slides[i].swiperSlideSize = slideSize;
8696    }
8697    slidesSizesGrid.push(slideSize);
8698
8699
8700    if (params.centeredSlides) {
8701      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
8702      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
8703      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;
8704      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
8705      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
8706      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
8707      slidesGrid.push(slidePosition);
8708    } else {
8709      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
8710      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
8711      slidesGrid.push(slidePosition);
8712      slidePosition = slidePosition + slideSize + spaceBetween;
8713    }
8714
8715    swiper.virtualSize += slideSize + spaceBetween;
8716
8717    prevSlideSize = slideSize;
8718
8719    index += 1;
8720  }
8721  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
8722  let newSlidesGrid;
8723
8724  if (
8725    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
8726    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
8727  }
8728  if (params.setWrapperSize) {
8729    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
8730    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
8731  }
8732
8733  if (params.slidesPerColumn > 1) {
8734    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
8735    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
8736    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });
8737    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });
8738    if (params.centeredSlides) {
8739      newSlidesGrid = [];
8740      for (let i = 0; i < snapGrid.length; i += 1) {
8741        let slidesGridItem = snapGrid[i];
8742        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
8743        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
8744      }
8745      snapGrid = newSlidesGrid;
8746    }
8747  }
8748
8749  // Remove last grid elements depending on width
8750  if (!params.centeredSlides) {
8751    newSlidesGrid = [];
8752    for (let i = 0; i < snapGrid.length; i += 1) {
8753      let slidesGridItem = snapGrid[i];
8754      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
8755      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
8756        newSlidesGrid.push(slidesGridItem);
8757      }
8758    }
8759    snapGrid = newSlidesGrid;
8760    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
8761      snapGrid.push(swiper.virtualSize - swiperSize);
8762    }
8763  }
8764  if (snapGrid.length === 0) snapGrid = [0];
8765
8766  if (params.spaceBetween !== 0) {
8767    if (swiper.isHorizontal()) {
8768      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });
8769      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });
8770    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });
8771  }
8772
8773  if (params.centeredSlides && params.centeredSlidesBounds) {
8774    let allSlidesSize = 0;
8775    slidesSizesGrid.forEach((slideSizeValue) => {
8776      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
8777    });
8778    allSlidesSize -= params.spaceBetween;
8779    const maxSnap = allSlidesSize - swiperSize;
8780    snapGrid = snapGrid.map((snap) => {
8781      if (snap < 0) return -offsetBefore;
8782      if (snap > maxSnap) return maxSnap + offsetAfter;
8783      return snap;
8784    });
8785  }
8786
8787  if (params.centerInsufficientSlides) {
8788    let allSlidesSize = 0;
8789    slidesSizesGrid.forEach((slideSizeValue) => {
8790      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
8791    });
8792    allSlidesSize -= params.spaceBetween;
8793    if (allSlidesSize < swiperSize) {
8794      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
8795      snapGrid.forEach((snap, snapIndex) => {
8796        snapGrid[snapIndex] = snap - allSlidesOffset;
8797      });
8798      slidesGrid.forEach((snap, snapIndex) => {
8799        slidesGrid[snapIndex] = snap + allSlidesOffset;
8800      });
8801    }
8802  }
8803
8804  Utils.extend(swiper, {
8805    slides,
8806    snapGrid,
8807    slidesGrid,
8808    slidesSizesGrid,
8809  });
8810
8811  if (slidesLength !== previousSlidesLength) {
8812    swiper.emit('slidesLengthChange');
8813  }
8814  if (snapGrid.length !== previousSnapGridLength) {
8815    if (swiper.params.watchOverflow) swiper.checkOverflow();
8816    swiper.emit('snapGridLengthChange');
8817  }
8818  if (slidesGrid.length !== previousSlidesGridLength) {
8819    swiper.emit('slidesGridLengthChange');
8820  }
8821
8822  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
8823    swiper.updateSlidesOffset();
8824  }
8825}
8826
8827function updateAutoHeight (speed) {
8828  const swiper = this;
8829  const activeSlides = [];
8830  let newHeight = 0;
8831  let i;
8832  if (typeof speed === 'number') {
8833    swiper.setTransition(speed);
8834  } else if (speed === true) {
8835    swiper.setTransition(swiper.params.speed);
8836  }
8837  // Find slides currently in view
8838  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
8839    if (swiper.params.centeredSlides) {
8840      swiper.visibleSlides.each((index, slide) => {
8841        activeSlides.push(slide);
8842      });
8843    } else {
8844      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
8845        const index = swiper.activeIndex + i;
8846        if (index > swiper.slides.length) break;
8847        activeSlides.push(swiper.slides.eq(index)[0]);
8848      }
8849    }
8850  } else {
8851    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
8852  }
8853
8854  // Find new height from highest slide in view
8855  for (i = 0; i < activeSlides.length; i += 1) {
8856    if (typeof activeSlides[i] !== 'undefined') {
8857      const height = activeSlides[i].offsetHeight;
8858      newHeight = height > newHeight ? height : newHeight;
8859    }
8860  }
8861
8862  // Update Height
8863  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);
8864}
8865
8866function updateSlidesOffset () {
8867  const swiper = this;
8868  const slides = swiper.slides;
8869  for (let i = 0; i < slides.length; i += 1) {
8870    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
8871  }
8872}
8873
8874function updateSlidesProgress (translate = (this && this.translate) || 0) {
8875  const swiper = this;
8876  const params = swiper.params;
8877
8878  const { slides, rtlTranslate: rtl } = swiper;
8879
8880  if (slides.length === 0) return;
8881  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
8882
8883  let offsetCenter = -translate;
8884  if (rtl) offsetCenter = translate;
8885
8886  // Visible Slides
8887  slides.removeClass(params.slideVisibleClass);
8888
8889  swiper.visibleSlidesIndexes = [];
8890  swiper.visibleSlides = [];
8891
8892  for (let i = 0; i < slides.length; i += 1) {
8893    const slide = slides[i];
8894    const slideProgress = (
8895      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
8896    ) / (slide.swiperSlideSize + params.spaceBetween);
8897    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {
8898      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);
8899      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
8900      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
8901                || (slideAfter > 1 && slideAfter <= swiper.size)
8902                || (slideBefore <= 0 && slideAfter >= swiper.size);
8903      if (isVisible) {
8904        swiper.visibleSlides.push(slide);
8905        swiper.visibleSlidesIndexes.push(i);
8906        slides.eq(i).addClass(params.slideVisibleClass);
8907      }
8908    }
8909    slide.progress = rtl ? -slideProgress : slideProgress;
8910  }
8911  swiper.visibleSlides = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.visibleSlides);
8912}
8913
8914function updateProgress (translate) {
8915  const swiper = this;
8916  if (typeof translate === 'undefined') {
8917    const multiplier = swiper.rtlTranslate ? -1 : 1;
8918    // eslint-disable-next-line
8919    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;
8920  }
8921  const params = swiper.params;
8922  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
8923  let { progress, isBeginning, isEnd } = swiper;
8924  const wasBeginning = isBeginning;
8925  const wasEnd = isEnd;
8926  if (translatesDiff === 0) {
8927    progress = 0;
8928    isBeginning = true;
8929    isEnd = true;
8930  } else {
8931    progress = (translate - swiper.minTranslate()) / (translatesDiff);
8932    isBeginning = progress <= 0;
8933    isEnd = progress >= 1;
8934  }
8935  Utils.extend(swiper, {
8936    progress,
8937    isBeginning,
8938    isEnd,
8939  });
8940
8941  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);
8942
8943  if (isBeginning && !wasBeginning) {
8944    swiper.emit('reachBeginning toEdge');
8945  }
8946  if (isEnd && !wasEnd) {
8947    swiper.emit('reachEnd toEdge');
8948  }
8949  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
8950    swiper.emit('fromEdge');
8951  }
8952
8953  swiper.emit('progress', progress);
8954}
8955
8956function updateSlidesClasses () {
8957  const swiper = this;
8958
8959  const {
8960    slides, params, $wrapperEl, activeIndex, realIndex,
8961  } = swiper;
8962  const isVirtual = swiper.virtual && params.virtual.enabled;
8963
8964  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
8965
8966  let activeSlide;
8967  if (isVirtual) {
8968    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
8969  } else {
8970    activeSlide = slides.eq(activeIndex);
8971  }
8972
8973  // Active classes
8974  activeSlide.addClass(params.slideActiveClass);
8975
8976  if (params.loop) {
8977    // Duplicate to all looped slides
8978    if (activeSlide.hasClass(params.slideDuplicateClass)) {
8979      $wrapperEl
8980        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`)
8981        .addClass(params.slideDuplicateActiveClass);
8982    } else {
8983      $wrapperEl
8984        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`)
8985        .addClass(params.slideDuplicateActiveClass);
8986    }
8987  }
8988  // Next Slide
8989  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
8990  if (params.loop && nextSlide.length === 0) {
8991    nextSlide = slides.eq(0);
8992    nextSlide.addClass(params.slideNextClass);
8993  }
8994  // Prev Slide
8995  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
8996  if (params.loop && prevSlide.length === 0) {
8997    prevSlide = slides.eq(-1);
8998    prevSlide.addClass(params.slidePrevClass);
8999  }
9000  if (params.loop) {
9001    // Duplicate to all looped slides
9002    if (nextSlide.hasClass(params.slideDuplicateClass)) {
9003      $wrapperEl
9004        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
9005        .addClass(params.slideDuplicateNextClass);
9006    } else {
9007      $wrapperEl
9008        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`)
9009        .addClass(params.slideDuplicateNextClass);
9010    }
9011    if (prevSlide.hasClass(params.slideDuplicateClass)) {
9012      $wrapperEl
9013        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
9014        .addClass(params.slideDuplicatePrevClass);
9015    } else {
9016      $wrapperEl
9017        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`)
9018        .addClass(params.slideDuplicatePrevClass);
9019    }
9020  }
9021}
9022
9023function updateActiveIndex (newActiveIndex) {
9024  const swiper = this;
9025  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9026  const {
9027    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,
9028  } = swiper;
9029  let activeIndex = newActiveIndex;
9030  let snapIndex;
9031  if (typeof activeIndex === 'undefined') {
9032    for (let i = 0; i < slidesGrid.length; i += 1) {
9033      if (typeof slidesGrid[i + 1] !== 'undefined') {
9034        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
9035          activeIndex = i;
9036        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
9037          activeIndex = i + 1;
9038        }
9039      } else if (translate >= slidesGrid[i]) {
9040        activeIndex = i;
9041      }
9042    }
9043    // Normalize slideIndex
9044    if (params.normalizeSlideIndex) {
9045      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
9046    }
9047  }
9048  if (snapGrid.indexOf(translate) >= 0) {
9049    snapIndex = snapGrid.indexOf(translate);
9050  } else {
9051    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
9052    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
9053  }
9054  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
9055  if (activeIndex === previousIndex) {
9056    if (snapIndex !== previousSnapIndex) {
9057      swiper.snapIndex = snapIndex;
9058      swiper.emit('snapIndexChange');
9059    }
9060    return;
9061  }
9062
9063  // Get real index
9064  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
9065
9066  Utils.extend(swiper, {
9067    snapIndex,
9068    realIndex,
9069    previousIndex,
9070    activeIndex,
9071  });
9072  swiper.emit('activeIndexChange');
9073  swiper.emit('snapIndexChange');
9074  if (previousRealIndex !== realIndex) {
9075    swiper.emit('realIndexChange');
9076  }
9077  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
9078    swiper.emit('slideChange');
9079  }
9080}
9081
9082function updateClickedSlide (e) {
9083  const swiper = this;
9084  const params = swiper.params;
9085  const slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).closest(`.${params.slideClass}`)[0];
9086  let slideFound = false;
9087  if (slide) {
9088    for (let i = 0; i < swiper.slides.length; i += 1) {
9089      if (swiper.slides[i] === slide) slideFound = true;
9090    }
9091  }
9092
9093  if (slide && slideFound) {
9094    swiper.clickedSlide = slide;
9095    if (swiper.virtual && swiper.params.virtual.enabled) {
9096      swiper.clickedIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slide).attr('data-swiper-slide-index'), 10);
9097    } else {
9098      swiper.clickedIndex = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slide).index();
9099    }
9100  } else {
9101    swiper.clickedSlide = undefined;
9102    swiper.clickedIndex = undefined;
9103    return;
9104  }
9105  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
9106    swiper.slideToClickedSlide();
9107  }
9108}
9109
9110var update = {
9111  updateSize,
9112  updateSlides,
9113  updateAutoHeight,
9114  updateSlidesOffset,
9115  updateSlidesProgress,
9116  updateProgress,
9117  updateSlidesClasses,
9118  updateActiveIndex,
9119  updateClickedSlide,
9120};
9121
9122function getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {
9123  const swiper = this;
9124
9125  const {
9126    params, rtlTranslate: rtl, translate, $wrapperEl,
9127  } = swiper;
9128
9129  if (params.virtualTranslate) {
9130    return rtl ? -translate : translate;
9131  }
9132  if (params.cssMode) {
9133    return translate;
9134  }
9135
9136  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
9137  if (rtl) currentTranslate = -currentTranslate;
9138
9139  return currentTranslate || 0;
9140}
9141
9142function setTranslate (translate, byController) {
9143  const swiper = this;
9144  const {
9145    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,
9146  } = swiper;
9147  let x = 0;
9148  let y = 0;
9149  const z = 0;
9150
9151  if (swiper.isHorizontal()) {
9152    x = rtl ? -translate : translate;
9153  } else {
9154    y = translate;
9155  }
9156
9157  if (params.roundLengths) {
9158    x = Math.floor(x);
9159    y = Math.floor(y);
9160  }
9161
9162  if (params.cssMode) {
9163    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
9164  } else if (!params.virtualTranslate) {
9165    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
9166  }
9167  swiper.previousTranslate = swiper.translate;
9168  swiper.translate = swiper.isHorizontal() ? x : y;
9169
9170  // Check if we need to update progress
9171  let newProgress;
9172  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9173  if (translatesDiff === 0) {
9174    newProgress = 0;
9175  } else {
9176    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
9177  }
9178  if (newProgress !== progress) {
9179    swiper.updateProgress(translate);
9180  }
9181
9182  swiper.emit('setTranslate', swiper.translate, byController);
9183}
9184
9185function minTranslate () {
9186  return (-this.snapGrid[0]);
9187}
9188
9189function maxTranslate () {
9190  return (-this.snapGrid[this.snapGrid.length - 1]);
9191}
9192
9193function translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
9194  const swiper = this;
9195
9196  const {
9197    params,
9198    wrapperEl,
9199  } = swiper;
9200
9201  if (swiper.animating && params.preventInteractionOnTransition) {
9202    return false;
9203  }
9204
9205  const minTranslate = swiper.minTranslate();
9206  const maxTranslate = swiper.maxTranslate();
9207  let newTranslate;
9208  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;
9209  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;
9210  else newTranslate = translate;
9211
9212  // Update progress
9213  swiper.updateProgress(newTranslate);
9214
9215  if (params.cssMode) {
9216    const isH = swiper.isHorizontal();
9217    if (speed === 0) {
9218      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
9219    } else {
9220      // eslint-disable-next-line
9221      if (wrapperEl.scrollTo) {
9222        wrapperEl.scrollTo({
9223          [isH ? 'left' : 'top']: -newTranslate,
9224          behavior: 'smooth',
9225        });
9226      } else {
9227        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
9228      }
9229    }
9230    return true;
9231  }
9232
9233  if (speed === 0) {
9234    swiper.setTransition(0);
9235    swiper.setTranslate(newTranslate);
9236    if (runCallbacks) {
9237      swiper.emit('beforeTransitionStart', speed, internal);
9238      swiper.emit('transitionEnd');
9239    }
9240  } else {
9241    swiper.setTransition(speed);
9242    swiper.setTranslate(newTranslate);
9243    if (runCallbacks) {
9244      swiper.emit('beforeTransitionStart', speed, internal);
9245      swiper.emit('transitionStart');
9246    }
9247    if (!swiper.animating) {
9248      swiper.animating = true;
9249      if (!swiper.onTranslateToWrapperTransitionEnd) {
9250        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
9251          if (!swiper || swiper.destroyed) return;
9252          if (e.target !== this) return;
9253          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
9254          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
9255          swiper.onTranslateToWrapperTransitionEnd = null;
9256          delete swiper.onTranslateToWrapperTransitionEnd;
9257          if (runCallbacks) {
9258            swiper.emit('transitionEnd');
9259          }
9260        };
9261      }
9262      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
9263      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
9264    }
9265  }
9266
9267  return true;
9268}
9269
9270var translate = {
9271  getTranslate,
9272  setTranslate,
9273  minTranslate,
9274  maxTranslate,
9275  translateTo,
9276};
9277
9278function setTransition (duration, byController) {
9279  const swiper = this;
9280
9281  if (!swiper.params.cssMode) {
9282    swiper.$wrapperEl.transition(duration);
9283  }
9284
9285  swiper.emit('setTransition', duration, byController);
9286}
9287
9288function transitionStart (runCallbacks = true, direction) {
9289  const swiper = this;
9290  const { activeIndex, params, previousIndex } = swiper;
9291  if (params.cssMode) return;
9292  if (params.autoHeight) {
9293    swiper.updateAutoHeight();
9294  }
9295
9296  let dir = direction;
9297  if (!dir) {
9298    if (activeIndex > previousIndex) dir = 'next';
9299    else if (activeIndex < previousIndex) dir = 'prev';
9300    else dir = 'reset';
9301  }
9302
9303  swiper.emit('transitionStart');
9304
9305  if (runCallbacks && activeIndex !== previousIndex) {
9306    if (dir === 'reset') {
9307      swiper.emit('slideResetTransitionStart');
9308      return;
9309    }
9310    swiper.emit('slideChangeTransitionStart');
9311    if (dir === 'next') {
9312      swiper.emit('slideNextTransitionStart');
9313    } else {
9314      swiper.emit('slidePrevTransitionStart');
9315    }
9316  }
9317}
9318
9319function transitionEnd (runCallbacks = true, direction) {
9320  const swiper = this;
9321  const { activeIndex, previousIndex, params } = swiper;
9322  swiper.animating = false;
9323  if (params.cssMode) return;
9324  swiper.setTransition(0);
9325
9326  let dir = direction;
9327  if (!dir) {
9328    if (activeIndex > previousIndex) dir = 'next';
9329    else if (activeIndex < previousIndex) dir = 'prev';
9330    else dir = 'reset';
9331  }
9332
9333  swiper.emit('transitionEnd');
9334
9335  if (runCallbacks && activeIndex !== previousIndex) {
9336    if (dir === 'reset') {
9337      swiper.emit('slideResetTransitionEnd');
9338      return;
9339    }
9340    swiper.emit('slideChangeTransitionEnd');
9341    if (dir === 'next') {
9342      swiper.emit('slideNextTransitionEnd');
9343    } else {
9344      swiper.emit('slidePrevTransitionEnd');
9345    }
9346  }
9347}
9348
9349var transition = {
9350  setTransition,
9351  transitionStart,
9352  transitionEnd,
9353};
9354
9355function slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
9356  const swiper = this;
9357  let slideIndex = index;
9358  if (slideIndex < 0) slideIndex = 0;
9359
9360  const {
9361    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,
9362  } = swiper;
9363  if (swiper.animating && params.preventInteractionOnTransition) {
9364    return false;
9365  }
9366
9367  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
9368  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
9369  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
9370
9371  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
9372    swiper.emit('beforeSlideChangeStart');
9373  }
9374
9375  const translate = -snapGrid[snapIndex];
9376
9377  // Update progress
9378  swiper.updateProgress(translate);
9379
9380  // Normalize slideIndex
9381  if (params.normalizeSlideIndex) {
9382    for (let i = 0; i < slidesGrid.length; i += 1) {
9383      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
9384        slideIndex = i;
9385      }
9386    }
9387  }
9388  // Directions locks
9389  if (swiper.initialized && slideIndex !== activeIndex) {
9390    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
9391      return false;
9392    }
9393    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
9394      if ((activeIndex || 0) !== slideIndex) return false;
9395    }
9396  }
9397
9398  let direction;
9399  if (slideIndex > activeIndex) direction = 'next';
9400  else if (slideIndex < activeIndex) direction = 'prev';
9401  else direction = 'reset';
9402
9403
9404  // Update Index
9405  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
9406    swiper.updateActiveIndex(slideIndex);
9407    // Update Height
9408    if (params.autoHeight) {
9409      swiper.updateAutoHeight();
9410    }
9411    swiper.updateSlidesClasses();
9412    if (params.effect !== 'slide') {
9413      swiper.setTranslate(translate);
9414    }
9415    if (direction !== 'reset') {
9416      swiper.transitionStart(runCallbacks, direction);
9417      swiper.transitionEnd(runCallbacks, direction);
9418    }
9419    return false;
9420  }
9421  if (params.cssMode) {
9422    const isH = swiper.isHorizontal();
9423    let t = -translate;
9424    if (rtl) {
9425      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
9426    }
9427    if (speed === 0) {
9428      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
9429    } else {
9430      // eslint-disable-next-line
9431      if (wrapperEl.scrollTo) {
9432        wrapperEl.scrollTo({
9433          [isH ? 'left' : 'top']: t,
9434          behavior: 'smooth',
9435        });
9436      } else {
9437        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
9438      }
9439    }
9440    return true;
9441  }
9442
9443  if (speed === 0) {
9444    swiper.setTransition(0);
9445    swiper.setTranslate(translate);
9446    swiper.updateActiveIndex(slideIndex);
9447    swiper.updateSlidesClasses();
9448    swiper.emit('beforeTransitionStart', speed, internal);
9449    swiper.transitionStart(runCallbacks, direction);
9450    swiper.transitionEnd(runCallbacks, direction);
9451  } else {
9452    swiper.setTransition(speed);
9453    swiper.setTranslate(translate);
9454    swiper.updateActiveIndex(slideIndex);
9455    swiper.updateSlidesClasses();
9456    swiper.emit('beforeTransitionStart', speed, internal);
9457    swiper.transitionStart(runCallbacks, direction);
9458    if (!swiper.animating) {
9459      swiper.animating = true;
9460      if (!swiper.onSlideToWrapperTransitionEnd) {
9461        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
9462          if (!swiper || swiper.destroyed) return;
9463          if (e.target !== this) return;
9464          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
9465          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
9466          swiper.onSlideToWrapperTransitionEnd = null;
9467          delete swiper.onSlideToWrapperTransitionEnd;
9468          swiper.transitionEnd(runCallbacks, direction);
9469        };
9470      }
9471      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
9472      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
9473    }
9474  }
9475
9476  return true;
9477}
9478
9479function slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {
9480  const swiper = this;
9481  let newIndex = index;
9482  if (swiper.params.loop) {
9483    newIndex += swiper.loopedSlides;
9484  }
9485
9486  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
9487}
9488
9489/* eslint no-unused-vars: "off" */
9490function slideNext (speed = this.params.speed, runCallbacks = true, internal) {
9491  const swiper = this;
9492  const { params, animating } = swiper;
9493  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
9494  if (params.loop) {
9495    if (animating) return false;
9496    swiper.loopFix();
9497    // eslint-disable-next-line
9498    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9499  }
9500  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
9501}
9502
9503/* eslint no-unused-vars: "off" */
9504function slidePrev (speed = this.params.speed, runCallbacks = true, internal) {
9505  const swiper = this;
9506  const {
9507    params, animating, snapGrid, slidesGrid, rtlTranslate,
9508  } = swiper;
9509
9510  if (params.loop) {
9511    if (animating) return false;
9512    swiper.loopFix();
9513    // eslint-disable-next-line
9514    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9515  }
9516  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
9517  function normalize(val) {
9518    if (val < 0) return -Math.floor(Math.abs(val));
9519    return Math.floor(val);
9520  }
9521  const normalizedTranslate = normalize(translate);
9522  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
9523  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));
9524
9525  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
9526  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
9527  if (typeof prevSnap === 'undefined' && params.cssMode) {
9528    snapGrid.forEach((snap) => {
9529      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
9530    });
9531  }
9532  let prevIndex;
9533  if (typeof prevSnap !== 'undefined') {
9534    prevIndex = slidesGrid.indexOf(prevSnap);
9535    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
9536  }
9537  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
9538}
9539
9540/* eslint no-unused-vars: "off" */
9541function slideReset (speed = this.params.speed, runCallbacks = true, internal) {
9542  const swiper = this;
9543  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
9544}
9545
9546/* eslint no-unused-vars: "off" */
9547function slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
9548  const swiper = this;
9549  let index = swiper.activeIndex;
9550  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
9551  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
9552
9553  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9554
9555  if (translate >= swiper.snapGrid[snapIndex]) {
9556    // The current translate is on or after the current snap index, so the choice
9557    // is between the current index and the one after it.
9558    const currentSnap = swiper.snapGrid[snapIndex];
9559    const nextSnap = swiper.snapGrid[snapIndex + 1];
9560    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {
9561      index += swiper.params.slidesPerGroup;
9562    }
9563  } else {
9564    // The current translate is before the current snap index, so the choice
9565    // is between the current index and the one before it.
9566    const prevSnap = swiper.snapGrid[snapIndex - 1];
9567    const currentSnap = swiper.snapGrid[snapIndex];
9568    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {
9569      index -= swiper.params.slidesPerGroup;
9570    }
9571  }
9572  index = Math.max(index, 0);
9573  index = Math.min(index, swiper.slidesGrid.length - 1);
9574
9575  return swiper.slideTo(index, speed, runCallbacks, internal);
9576}
9577
9578function slideToClickedSlide () {
9579  const swiper = this;
9580  const { params, $wrapperEl } = swiper;
9581
9582  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
9583  let slideToIndex = swiper.clickedIndex;
9584  let realIndex;
9585  if (params.loop) {
9586    if (swiper.animating) return;
9587    realIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
9588    if (params.centeredSlides) {
9589      if (
9590        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
9591        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
9592      ) {
9593        swiper.loopFix();
9594        slideToIndex = $wrapperEl
9595          .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
9596          .eq(0)
9597          .index();
9598
9599        Utils.nextTick(() => {
9600          swiper.slideTo(slideToIndex);
9601        });
9602      } else {
9603        swiper.slideTo(slideToIndex);
9604      }
9605    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
9606      swiper.loopFix();
9607      slideToIndex = $wrapperEl
9608        .children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`)
9609        .eq(0)
9610        .index();
9611
9612      Utils.nextTick(() => {
9613        swiper.slideTo(slideToIndex);
9614      });
9615    } else {
9616      swiper.slideTo(slideToIndex);
9617    }
9618  } else {
9619    swiper.slideTo(slideToIndex);
9620  }
9621}
9622
9623var slide = {
9624  slideTo,
9625  slideToLoop,
9626  slideNext,
9627  slidePrev,
9628  slideReset,
9629  slideToClosest,
9630  slideToClickedSlide,
9631};
9632
9633function loopCreate () {
9634  const swiper = this;
9635  const { params, $wrapperEl } = swiper;
9636  // Remove duplicated slides
9637  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
9638
9639  let slides = $wrapperEl.children(`.${params.slideClass}`);
9640
9641  if (params.loopFillGroupWithBlank) {
9642    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
9643    if (blankSlidesNum !== params.slidesPerGroup) {
9644      for (let i = 0; i < blankSlidesNum; i += 1) {
9645        const blankNode = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
9646        $wrapperEl.append(blankNode);
9647      }
9648      slides = $wrapperEl.children(`.${params.slideClass}`);
9649    }
9650  }
9651
9652  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
9653
9654  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
9655  swiper.loopedSlides += params.loopAdditionalSlides;
9656  if (swiper.loopedSlides > slides.length) {
9657    swiper.loopedSlides = slides.length;
9658  }
9659
9660  const prependSlides = [];
9661  const appendSlides = [];
9662  slides.each((index, el) => {
9663    const slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(el);
9664    if (index < swiper.loopedSlides) appendSlides.push(el);
9665    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);
9666    slide.attr('data-swiper-slide-index', index);
9667  });
9668  for (let i = 0; i < appendSlides.length; i += 1) {
9669    $wrapperEl.append(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
9670  }
9671  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
9672    $wrapperEl.prepend(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
9673  }
9674}
9675
9676function loopFix () {
9677  const swiper = this;
9678
9679  swiper.emit('beforeLoopFix');
9680
9681  const {
9682    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,
9683  } = swiper;
9684  let newIndex;
9685  swiper.allowSlidePrev = true;
9686  swiper.allowSlideNext = true;
9687
9688  const snapTranslate = -snapGrid[activeIndex];
9689  const diff = snapTranslate - swiper.getTranslate();
9690
9691  // Fix For Negative Oversliding
9692  if (activeIndex < loopedSlides) {
9693    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
9694    newIndex += loopedSlides;
9695    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
9696    if (slideChanged && diff !== 0) {
9697      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
9698    }
9699  } else if (activeIndex >= slides.length - loopedSlides) {
9700    // Fix For Positive Oversliding
9701    newIndex = -slides.length + activeIndex + loopedSlides;
9702    newIndex += loopedSlides;
9703    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
9704    if (slideChanged && diff !== 0) {
9705      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
9706    }
9707  }
9708  swiper.allowSlidePrev = allowSlidePrev;
9709  swiper.allowSlideNext = allowSlideNext;
9710
9711  swiper.emit('loopFix');
9712}
9713
9714function loopDestroy () {
9715  const swiper = this;
9716  const { $wrapperEl, params, slides } = swiper;
9717  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
9718  slides.removeAttr('data-swiper-slide-index');
9719}
9720
9721var loop = {
9722  loopCreate,
9723  loopFix,
9724  loopDestroy,
9725};
9726
9727function setGrabCursor (moving) {
9728  const swiper = this;
9729  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
9730  const el = swiper.el;
9731  el.style.cursor = 'move';
9732  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
9733  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
9734  el.style.cursor = moving ? 'grabbing' : 'grab';
9735}
9736
9737function unsetGrabCursor () {
9738  const swiper = this;
9739  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;
9740  swiper.el.style.cursor = '';
9741}
9742
9743var grabCursor = {
9744  setGrabCursor,
9745  unsetGrabCursor,
9746};
9747
9748function appendSlide (slides) {
9749  const swiper = this;
9750  const { $wrapperEl, params } = swiper;
9751  if (params.loop) {
9752    swiper.loopDestroy();
9753  }
9754  if (typeof slides === 'object' && 'length' in slides) {
9755    for (let i = 0; i < slides.length; i += 1) {
9756      if (slides[i]) $wrapperEl.append(slides[i]);
9757    }
9758  } else {
9759    $wrapperEl.append(slides);
9760  }
9761  if (params.loop) {
9762    swiper.loopCreate();
9763  }
9764  if (!(params.observer && Support.observer)) {
9765    swiper.update();
9766  }
9767}
9768
9769function prependSlide (slides) {
9770  const swiper = this;
9771  const { params, $wrapperEl, activeIndex } = swiper;
9772
9773  if (params.loop) {
9774    swiper.loopDestroy();
9775  }
9776  let newActiveIndex = activeIndex + 1;
9777  if (typeof slides === 'object' && 'length' in slides) {
9778    for (let i = 0; i < slides.length; i += 1) {
9779      if (slides[i]) $wrapperEl.prepend(slides[i]);
9780    }
9781    newActiveIndex = activeIndex + slides.length;
9782  } else {
9783    $wrapperEl.prepend(slides);
9784  }
9785  if (params.loop) {
9786    swiper.loopCreate();
9787  }
9788  if (!(params.observer && Support.observer)) {
9789    swiper.update();
9790  }
9791  swiper.slideTo(newActiveIndex, 0, false);
9792}
9793
9794function addSlide (index, slides) {
9795  const swiper = this;
9796  const { $wrapperEl, params, activeIndex } = swiper;
9797  let activeIndexBuffer = activeIndex;
9798  if (params.loop) {
9799    activeIndexBuffer -= swiper.loopedSlides;
9800    swiper.loopDestroy();
9801    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
9802  }
9803  const baseLength = swiper.slides.length;
9804  if (index <= 0) {
9805    swiper.prependSlide(slides);
9806    return;
9807  }
9808  if (index >= baseLength) {
9809    swiper.appendSlide(slides);
9810    return;
9811  }
9812  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
9813
9814  const slidesBuffer = [];
9815  for (let i = baseLength - 1; i >= index; i -= 1) {
9816    const currentSlide = swiper.slides.eq(i);
9817    currentSlide.remove();
9818    slidesBuffer.unshift(currentSlide);
9819  }
9820
9821  if (typeof slides === 'object' && 'length' in slides) {
9822    for (let i = 0; i < slides.length; i += 1) {
9823      if (slides[i]) $wrapperEl.append(slides[i]);
9824    }
9825    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
9826  } else {
9827    $wrapperEl.append(slides);
9828  }
9829
9830  for (let i = 0; i < slidesBuffer.length; i += 1) {
9831    $wrapperEl.append(slidesBuffer[i]);
9832  }
9833
9834  if (params.loop) {
9835    swiper.loopCreate();
9836  }
9837  if (!(params.observer && Support.observer)) {
9838    swiper.update();
9839  }
9840  if (params.loop) {
9841    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
9842  } else {
9843    swiper.slideTo(newActiveIndex, 0, false);
9844  }
9845}
9846
9847function removeSlide (slidesIndexes) {
9848  const swiper = this;
9849  const { params, $wrapperEl, activeIndex } = swiper;
9850
9851  let activeIndexBuffer = activeIndex;
9852  if (params.loop) {
9853    activeIndexBuffer -= swiper.loopedSlides;
9854    swiper.loopDestroy();
9855    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
9856  }
9857  let newActiveIndex = activeIndexBuffer;
9858  let indexToRemove;
9859
9860  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
9861    for (let i = 0; i < slidesIndexes.length; i += 1) {
9862      indexToRemove = slidesIndexes[i];
9863      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
9864      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
9865    }
9866    newActiveIndex = Math.max(newActiveIndex, 0);
9867  } else {
9868    indexToRemove = slidesIndexes;
9869    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
9870    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
9871    newActiveIndex = Math.max(newActiveIndex, 0);
9872  }
9873
9874  if (params.loop) {
9875    swiper.loopCreate();
9876  }
9877
9878  if (!(params.observer && Support.observer)) {
9879    swiper.update();
9880  }
9881  if (params.loop) {
9882    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
9883  } else {
9884    swiper.slideTo(newActiveIndex, 0, false);
9885  }
9886}
9887
9888function removeAllSlides () {
9889  const swiper = this;
9890
9891  const slidesIndexes = [];
9892  for (let i = 0; i < swiper.slides.length; i += 1) {
9893    slidesIndexes.push(i);
9894  }
9895  swiper.removeSlide(slidesIndexes);
9896}
9897
9898var manipulation = {
9899  appendSlide,
9900  prependSlide,
9901  addSlide,
9902  removeSlide,
9903  removeAllSlides,
9904};
9905
9906const Device = (function Device() {
9907  const platform = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.platform;
9908  const ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent;
9909
9910  const device = {
9911    ios: false,
9912    android: false,
9913    androidChrome: false,
9914    desktop: false,
9915    iphone: false,
9916    ipod: false,
9917    ipad: false,
9918    edge: false,
9919    ie: false,
9920    firefox: false,
9921    macos: false,
9922    windows: false,
9923    cordova: !!(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].phonegap),
9924    phonegap: !!(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].phonegap),
9925    electron: false,
9926  };
9927
9928  const screenWidth = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].screen.width;
9929  const screenHeight = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].screen.height;
9930
9931  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
9932  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
9933  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
9934  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
9935  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
9936  const edge = ua.indexOf('Edge/') >= 0;
9937  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
9938  const windows = platform === 'Win32';
9939  const electron = ua.toLowerCase().indexOf('electron') >= 0;
9940  let macos = platform === 'MacIntel';
9941
9942  // iPadOs 13 fix
9943  if (!ipad
9944    && macos
9945    && Support.touch
9946    && (
9947      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9
9948      || (screenWidth === 834 && screenHeight === 1194) // Pro 11
9949      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5
9950      || (screenWidth === 768 && screenHeight === 1024) // other
9951    )
9952  ) {
9953    ipad = ua.match(/(Version)\/([\d.]+)/);
9954    macos = false;
9955  }
9956
9957  device.ie = ie;
9958  device.edge = edge;
9959  device.firefox = firefox;
9960
9961  // Android
9962  if (android && !windows) {
9963    device.os = 'android';
9964    device.osVersion = android[2];
9965    device.android = true;
9966    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
9967  }
9968  if (ipad || iphone || ipod) {
9969    device.os = 'ios';
9970    device.ios = true;
9971  }
9972  // iOS
9973  if (iphone && !ipod) {
9974    device.osVersion = iphone[2].replace(/_/g, '.');
9975    device.iphone = true;
9976  }
9977  if (ipad) {
9978    device.osVersion = ipad[2].replace(/_/g, '.');
9979    device.ipad = true;
9980  }
9981  if (ipod) {
9982    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
9983    device.ipod = true;
9984  }
9985  // iOS 8+ changed UA
9986  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
9987    if (device.osVersion.split('.')[0] === '10') {
9988      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
9989    }
9990  }
9991
9992  // Webview
9993  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.standalone))
9994    || (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].matchMedia && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].matchMedia('(display-mode: standalone)').matches);
9995  device.webview = device.webView;
9996  device.standalone = device.webView;
9997
9998  // Desktop
9999  device.desktop = !(device.ios || device.android) || electron;
10000  if (device.desktop) {
10001    device.electron = electron;
10002    device.macos = macos;
10003    device.windows = windows;
10004    if (device.macos) {
10005      device.os = 'macos';
10006    }
10007    if (device.windows) {
10008      device.os = 'windows';
10009    }
10010  }
10011
10012  // Pixel Ratio
10013  device.pixelRatio = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].devicePixelRatio || 1;
10014
10015  // Export object
10016  return device;
10017}());
10018
10019function onTouchStart (event) {
10020  const swiper = this;
10021  const data = swiper.touchEventsData;
10022  const { params, touches } = swiper;
10023
10024  if (swiper.animating && params.preventInteractionOnTransition) {
10025    return;
10026  }
10027  let e = event;
10028  if (e.originalEvent) e = e.originalEvent;
10029  const $targetEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target);
10030
10031  if (params.touchEventsTarget === 'wrapper') {
10032    if (!$targetEl.closest(swiper.wrapperEl).length) return;
10033  }
10034  data.isTouchEvent = e.type === 'touchstart';
10035  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
10036  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
10037  if (data.isTouched && data.isMoved) return;
10038  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
10039    swiper.allowClick = true;
10040    return;
10041  }
10042  if (params.swipeHandler) {
10043    if (!$targetEl.closest(params.swipeHandler)[0]) return;
10044  }
10045
10046  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
10047  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
10048  const startX = touches.currentX;
10049  const startY = touches.currentY;
10050
10051  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
10052
10053  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
10054  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
10055  if (
10056    edgeSwipeDetection
10057    && ((startX <= edgeSwipeThreshold)
10058    || (startX >= ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].screen.width - edgeSwipeThreshold))
10059  ) {
10060    return;
10061  }
10062
10063  Utils.extend(data, {
10064    isTouched: true,
10065    isMoved: false,
10066    allowTouchCallbacks: true,
10067    isScrolling: undefined,
10068    startMoving: undefined,
10069  });
10070
10071  touches.startX = startX;
10072  touches.startY = startY;
10073  data.touchStartTime = Utils.now();
10074  swiper.allowClick = true;
10075  swiper.updateSize();
10076  swiper.swipeDirection = undefined;
10077  if (params.threshold > 0) data.allowThresholdMove = false;
10078  if (e.type !== 'touchstart') {
10079    let preventDefault = true;
10080    if ($targetEl.is(data.formElements)) preventDefault = false;
10081    if (
10082      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement
10083      && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement).is(data.formElements)
10084      && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement !== $targetEl[0]
10085    ) {
10086      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.blur();
10087    }
10088
10089    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
10090    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
10091      e.preventDefault();
10092    }
10093  }
10094  swiper.emit('touchStart', e);
10095}
10096
10097function onTouchMove (event) {
10098  const swiper = this;
10099  const data = swiper.touchEventsData;
10100  const { params, touches, rtlTranslate: rtl } = swiper;
10101  let e = event;
10102  if (e.originalEvent) e = e.originalEvent;
10103  if (!data.isTouched) {
10104    if (data.startMoving && data.isScrolling) {
10105      swiper.emit('touchMoveOpposite', e);
10106    }
10107    return;
10108  }
10109  if (data.isTouchEvent && e.type !== 'touchmove') return;
10110  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
10111  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
10112  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
10113  if (e.preventedByNestedSwiper) {
10114    touches.startX = pageX;
10115    touches.startY = pageY;
10116    return;
10117  }
10118  if (!swiper.allowTouchMove) {
10119    // isMoved = true;
10120    swiper.allowClick = false;
10121    if (data.isTouched) {
10122      Utils.extend(touches, {
10123        startX: pageX,
10124        startY: pageY,
10125        currentX: pageX,
10126        currentY: pageY,
10127      });
10128      data.touchStartTime = Utils.now();
10129    }
10130    return;
10131  }
10132  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
10133    if (swiper.isVertical()) {
10134      // Vertical
10135      if (
10136        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
10137        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
10138      ) {
10139        data.isTouched = false;
10140        data.isMoved = false;
10141        return;
10142      }
10143    } else if (
10144      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
10145      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
10146    ) {
10147      return;
10148    }
10149  }
10150  if (data.isTouchEvent && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement) {
10151    if (e.target === ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is(data.formElements)) {
10152      data.isMoved = true;
10153      swiper.allowClick = false;
10154      return;
10155    }
10156  }
10157  if (data.allowTouchCallbacks) {
10158    swiper.emit('touchMove', e);
10159  }
10160  if (e.targetTouches && e.targetTouches.length > 1) return;
10161
10162  touches.currentX = pageX;
10163  touches.currentY = pageY;
10164
10165  const diffX = touches.currentX - touches.startX;
10166  const diffY = touches.currentY - touches.startY;
10167  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;
10168
10169  if (typeof data.isScrolling === 'undefined') {
10170    let touchAngle;
10171    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
10172      data.isScrolling = false;
10173    } else {
10174      // eslint-disable-next-line
10175      if ((diffX * diffX) + (diffY * diffY) >= 25) {
10176        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
10177        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
10178      }
10179    }
10180  }
10181  if (data.isScrolling) {
10182    swiper.emit('touchMoveOpposite', e);
10183  }
10184  if (typeof data.startMoving === 'undefined') {
10185    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
10186      data.startMoving = true;
10187    }
10188  }
10189  if (data.isScrolling) {
10190    data.isTouched = false;
10191    return;
10192  }
10193  if (!data.startMoving) {
10194    return;
10195  }
10196  swiper.allowClick = false;
10197  if (!params.cssMode && e.cancelable) {
10198    e.preventDefault();
10199  }
10200  if (params.touchMoveStopPropagation && !params.nested) {
10201    e.stopPropagation();
10202  }
10203
10204  if (!data.isMoved) {
10205    if (params.loop) {
10206      swiper.loopFix();
10207    }
10208    data.startTranslate = swiper.getTranslate();
10209    swiper.setTransition(0);
10210    if (swiper.animating) {
10211      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
10212    }
10213    data.allowMomentumBounce = false;
10214    // Grab Cursor
10215    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
10216      swiper.setGrabCursor(true);
10217    }
10218    swiper.emit('sliderFirstMove', e);
10219  }
10220  swiper.emit('sliderMove', e);
10221  data.isMoved = true;
10222
10223  let diff = swiper.isHorizontal() ? diffX : diffY;
10224  touches.diff = diff;
10225
10226  diff *= params.touchRatio;
10227  if (rtl) diff = -diff;
10228
10229  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
10230  data.currentTranslate = diff + data.startTranslate;
10231
10232  let disableParentSwiper = true;
10233  let resistanceRatio = params.resistanceRatio;
10234  if (params.touchReleaseOnEdges) {
10235    resistanceRatio = 0;
10236  }
10237  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
10238    disableParentSwiper = false;
10239    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);
10240  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
10241    disableParentSwiper = false;
10242    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);
10243  }
10244
10245  if (disableParentSwiper) {
10246    e.preventedByNestedSwiper = true;
10247  }
10248
10249  // Directions locks
10250  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
10251    data.currentTranslate = data.startTranslate;
10252  }
10253  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
10254    data.currentTranslate = data.startTranslate;
10255  }
10256
10257
10258  // Threshold
10259  if (params.threshold > 0) {
10260    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
10261      if (!data.allowThresholdMove) {
10262        data.allowThresholdMove = true;
10263        touches.startX = touches.currentX;
10264        touches.startY = touches.currentY;
10265        data.currentTranslate = data.startTranslate;
10266        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
10267        return;
10268      }
10269    } else {
10270      data.currentTranslate = data.startTranslate;
10271      return;
10272    }
10273  }
10274
10275  if (!params.followFinger || params.cssMode) return;
10276
10277  // Update active index in free mode
10278  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
10279    swiper.updateActiveIndex();
10280    swiper.updateSlidesClasses();
10281  }
10282  if (params.freeMode) {
10283    // Velocity
10284    if (data.velocities.length === 0) {
10285      data.velocities.push({
10286        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
10287        time: data.touchStartTime,
10288      });
10289    }
10290    data.velocities.push({
10291      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
10292      time: Utils.now(),
10293    });
10294  }
10295  // Update progress
10296  swiper.updateProgress(data.currentTranslate);
10297  // Update translate
10298  swiper.setTranslate(data.currentTranslate);
10299}
10300
10301function onTouchEnd (event) {
10302  const swiper = this;
10303  const data = swiper.touchEventsData;
10304
10305  const {
10306    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,
10307  } = swiper;
10308  let e = event;
10309  if (e.originalEvent) e = e.originalEvent;
10310  if (data.allowTouchCallbacks) {
10311    swiper.emit('touchEnd', e);
10312  }
10313  data.allowTouchCallbacks = false;
10314  if (!data.isTouched) {
10315    if (data.isMoved && params.grabCursor) {
10316      swiper.setGrabCursor(false);
10317    }
10318    data.isMoved = false;
10319    data.startMoving = false;
10320    return;
10321  }
10322  // Return Grab Cursor
10323  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
10324    swiper.setGrabCursor(false);
10325  }
10326
10327  // Time diff
10328  const touchEndTime = Utils.now();
10329  const timeDiff = touchEndTime - data.touchStartTime;
10330
10331  // Tap, doubleTap, Click
10332  if (swiper.allowClick) {
10333    swiper.updateClickedSlide(e);
10334    swiper.emit('tap click', e);
10335    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
10336      swiper.emit('doubleTap doubleClick', e);
10337    }
10338  }
10339
10340  data.lastClickTime = Utils.now();
10341  Utils.nextTick(() => {
10342    if (!swiper.destroyed) swiper.allowClick = true;
10343  });
10344
10345  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
10346    data.isTouched = false;
10347    data.isMoved = false;
10348    data.startMoving = false;
10349    return;
10350  }
10351  data.isTouched = false;
10352  data.isMoved = false;
10353  data.startMoving = false;
10354
10355  let currentPos;
10356  if (params.followFinger) {
10357    currentPos = rtl ? swiper.translate : -swiper.translate;
10358  } else {
10359    currentPos = -data.currentTranslate;
10360  }
10361
10362  if (params.cssMode) {
10363    return;
10364  }
10365
10366  if (params.freeMode) {
10367    if (currentPos < -swiper.minTranslate()) {
10368      swiper.slideTo(swiper.activeIndex);
10369      return;
10370    }
10371    if (currentPos > -swiper.maxTranslate()) {
10372      if (swiper.slides.length < snapGrid.length) {
10373        swiper.slideTo(snapGrid.length - 1);
10374      } else {
10375        swiper.slideTo(swiper.slides.length - 1);
10376      }
10377      return;
10378    }
10379
10380    if (params.freeModeMomentum) {
10381      if (data.velocities.length > 1) {
10382        const lastMoveEvent = data.velocities.pop();
10383        const velocityEvent = data.velocities.pop();
10384
10385        const distance = lastMoveEvent.position - velocityEvent.position;
10386        const time = lastMoveEvent.time - velocityEvent.time;
10387        swiper.velocity = distance / time;
10388        swiper.velocity /= 2;
10389        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
10390          swiper.velocity = 0;
10391        }
10392        // this implies that the user stopped moving a finger then released.
10393        // There would be no events with distance zero, so the last event is stale.
10394        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
10395          swiper.velocity = 0;
10396        }
10397      } else {
10398        swiper.velocity = 0;
10399      }
10400      swiper.velocity *= params.freeModeMomentumVelocityRatio;
10401
10402      data.velocities.length = 0;
10403      let momentumDuration = 1000 * params.freeModeMomentumRatio;
10404      const momentumDistance = swiper.velocity * momentumDuration;
10405
10406      let newPosition = swiper.translate + momentumDistance;
10407      if (rtl) newPosition = -newPosition;
10408
10409      let doBounce = false;
10410      let afterBouncePosition;
10411      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
10412      let needsLoopFix;
10413      if (newPosition < swiper.maxTranslate()) {
10414        if (params.freeModeMomentumBounce) {
10415          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
10416            newPosition = swiper.maxTranslate() - bounceAmount;
10417          }
10418          afterBouncePosition = swiper.maxTranslate();
10419          doBounce = true;
10420          data.allowMomentumBounce = true;
10421        } else {
10422          newPosition = swiper.maxTranslate();
10423        }
10424        if (params.loop && params.centeredSlides) needsLoopFix = true;
10425      } else if (newPosition > swiper.minTranslate()) {
10426        if (params.freeModeMomentumBounce) {
10427          if (newPosition - swiper.minTranslate() > bounceAmount) {
10428            newPosition = swiper.minTranslate() + bounceAmount;
10429          }
10430          afterBouncePosition = swiper.minTranslate();
10431          doBounce = true;
10432          data.allowMomentumBounce = true;
10433        } else {
10434          newPosition = swiper.minTranslate();
10435        }
10436        if (params.loop && params.centeredSlides) needsLoopFix = true;
10437      } else if (params.freeModeSticky) {
10438        let nextSlide;
10439        for (let j = 0; j < snapGrid.length; j += 1) {
10440          if (snapGrid[j] > -newPosition) {
10441            nextSlide = j;
10442            break;
10443          }
10444        }
10445
10446        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
10447          newPosition = snapGrid[nextSlide];
10448        } else {
10449          newPosition = snapGrid[nextSlide - 1];
10450        }
10451        newPosition = -newPosition;
10452      }
10453      if (needsLoopFix) {
10454        swiper.once('transitionEnd', () => {
10455          swiper.loopFix();
10456        });
10457      }
10458      // Fix duration
10459      if (swiper.velocity !== 0) {
10460        if (rtl) {
10461          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
10462        } else {
10463          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
10464        }
10465        if (params.freeModeSticky) {
10466          // If freeModeSticky is active and the user ends a swipe with a slow-velocity
10467          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
10468          // It's easy to see this when simulating touch with mouse events. To fix this,
10469          // limit single-slide swipes to the default slide duration. This also has the
10470          // nice side effect of matching slide speed if the user stopped moving before
10471          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
10472          // For faster swipes, also apply limits (albeit higher ones).
10473          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
10474          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
10475          if (moveDistance < currentSlideSize) {
10476            momentumDuration = params.speed;
10477          } else if (moveDistance < 2 * currentSlideSize) {
10478            momentumDuration = params.speed * 1.5;
10479          } else {
10480            momentumDuration = params.speed * 2.5;
10481          }
10482        }
10483      } else if (params.freeModeSticky) {
10484        swiper.slideToClosest();
10485        return;
10486      }
10487
10488      if (params.freeModeMomentumBounce && doBounce) {
10489        swiper.updateProgress(afterBouncePosition);
10490        swiper.setTransition(momentumDuration);
10491        swiper.setTranslate(newPosition);
10492        swiper.transitionStart(true, swiper.swipeDirection);
10493        swiper.animating = true;
10494        $wrapperEl.transitionEnd(() => {
10495          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
10496          swiper.emit('momentumBounce');
10497          swiper.setTransition(params.speed);
10498          setTimeout(() => {
10499            swiper.setTranslate(afterBouncePosition);
10500            $wrapperEl.transitionEnd(() => {
10501              if (!swiper || swiper.destroyed) return;
10502              swiper.transitionEnd();
10503            });
10504          }, 0);
10505        });
10506      } else if (swiper.velocity) {
10507        swiper.updateProgress(newPosition);
10508        swiper.setTransition(momentumDuration);
10509        swiper.setTranslate(newPosition);
10510        swiper.transitionStart(true, swiper.swipeDirection);
10511        if (!swiper.animating) {
10512          swiper.animating = true;
10513          $wrapperEl.transitionEnd(() => {
10514            if (!swiper || swiper.destroyed) return;
10515            swiper.transitionEnd();
10516          });
10517        }
10518      } else {
10519        swiper.updateProgress(newPosition);
10520      }
10521
10522      swiper.updateActiveIndex();
10523      swiper.updateSlidesClasses();
10524    } else if (params.freeModeSticky) {
10525      swiper.slideToClosest();
10526      return;
10527    }
10528
10529    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
10530      swiper.updateProgress();
10531      swiper.updateActiveIndex();
10532      swiper.updateSlidesClasses();
10533    }
10534    return;
10535  }
10536
10537  // Find current slide
10538  let stopIndex = 0;
10539  let groupSize = swiper.slidesSizesGrid[0];
10540  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {
10541    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
10542    if (typeof slidesGrid[i + increment] !== 'undefined') {
10543      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
10544        stopIndex = i;
10545        groupSize = slidesGrid[i + increment] - slidesGrid[i];
10546      }
10547    } else if (currentPos >= slidesGrid[i]) {
10548      stopIndex = i;
10549      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
10550    }
10551  }
10552
10553  // Find current slide size
10554  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
10555  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);
10556
10557  if (timeDiff > params.longSwipesMs) {
10558    // Long touches
10559    if (!params.longSwipes) {
10560      swiper.slideTo(swiper.activeIndex);
10561      return;
10562    }
10563    if (swiper.swipeDirection === 'next') {
10564      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);
10565      else swiper.slideTo(stopIndex);
10566    }
10567    if (swiper.swipeDirection === 'prev') {
10568      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);
10569      else swiper.slideTo(stopIndex);
10570    }
10571  } else {
10572    // Short swipes
10573    if (!params.shortSwipes) {
10574      swiper.slideTo(swiper.activeIndex);
10575      return;
10576    }
10577    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
10578    if (!isNavButtonTarget) {
10579      if (swiper.swipeDirection === 'next') {
10580        swiper.slideTo(stopIndex + increment);
10581      }
10582      if (swiper.swipeDirection === 'prev') {
10583        swiper.slideTo(stopIndex);
10584      }
10585    } else if (e.target === swiper.navigation.nextEl) {
10586      swiper.slideTo(stopIndex + increment);
10587    } else {
10588      swiper.slideTo(stopIndex);
10589    }
10590  }
10591}
10592
10593function onResize () {
10594  const swiper = this;
10595
10596  const { params, el } = swiper;
10597
10598  if (el && el.offsetWidth === 0) return;
10599
10600  // Breakpoints
10601  if (params.breakpoints) {
10602    swiper.setBreakpoint();
10603  }
10604
10605  // Save locks
10606  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;
10607
10608  // Disable locks on resize
10609  swiper.allowSlideNext = true;
10610  swiper.allowSlidePrev = true;
10611
10612  swiper.updateSize();
10613  swiper.updateSlides();
10614
10615  swiper.updateSlidesClasses();
10616  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
10617    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
10618  } else {
10619    swiper.slideTo(swiper.activeIndex, 0, false, true);
10620  }
10621
10622  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
10623    swiper.autoplay.run();
10624  }
10625  // Return locks after resize
10626  swiper.allowSlidePrev = allowSlidePrev;
10627  swiper.allowSlideNext = allowSlideNext;
10628
10629  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
10630    swiper.checkOverflow();
10631  }
10632}
10633
10634function onClick (e) {
10635  const swiper = this;
10636  if (!swiper.allowClick) {
10637    if (swiper.params.preventClicks) e.preventDefault();
10638    if (swiper.params.preventClicksPropagation && swiper.animating) {
10639      e.stopPropagation();
10640      e.stopImmediatePropagation();
10641    }
10642  }
10643}
10644
10645function onScroll () {
10646  const swiper = this;
10647  const { wrapperEl, rtlTranslate } = swiper;
10648  swiper.previousTranslate = swiper.translate;
10649  if (swiper.isHorizontal()) {
10650    if (rtlTranslate) {
10651      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);
10652    } else {
10653      swiper.translate = -wrapperEl.scrollLeft;
10654    }
10655  } else {
10656    swiper.translate = -wrapperEl.scrollTop;
10657  }
10658  // eslint-disable-next-line
10659  if (swiper.translate === -0) swiper.translate = 0;
10660
10661  swiper.updateActiveIndex();
10662  swiper.updateSlidesClasses();
10663
10664  let newProgress;
10665  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
10666  if (translatesDiff === 0) {
10667    newProgress = 0;
10668  } else {
10669    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);
10670  }
10671  if (newProgress !== swiper.progress) {
10672    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
10673  }
10674
10675  swiper.emit('setTranslate', swiper.translate, false);
10676}
10677
10678let dummyEventAttached = false;
10679function dummyEventListener() {}
10680
10681function attachEvents() {
10682  const swiper = this;
10683  const {
10684    params, touchEvents, el, wrapperEl,
10685  } = swiper;
10686
10687  swiper.onTouchStart = onTouchStart.bind(swiper);
10688  swiper.onTouchMove = onTouchMove.bind(swiper);
10689  swiper.onTouchEnd = onTouchEnd.bind(swiper);
10690  if (params.cssMode) {
10691    swiper.onScroll = onScroll.bind(swiper);
10692  }
10693
10694  swiper.onClick = onClick.bind(swiper);
10695
10696  const capture = !!params.nested;
10697
10698  // Touch Events
10699  if (!Support.touch && Support.pointerEvents) {
10700    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
10701    ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEvents.move, swiper.onTouchMove, capture);
10702    ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEvents.end, swiper.onTouchEnd, false);
10703  } else {
10704    if (Support.touch) {
10705      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
10706      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
10707      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
10708      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
10709      if (touchEvents.cancel) {
10710        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
10711      }
10712      if (!dummyEventAttached) {
10713        ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener('touchstart', dummyEventListener);
10714        dummyEventAttached = true;
10715      }
10716    }
10717    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
10718      el.addEventListener('mousedown', swiper.onTouchStart, false);
10719      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener('mousemove', swiper.onTouchMove, capture);
10720      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener('mouseup', swiper.onTouchEnd, false);
10721    }
10722  }
10723  // Prevent Links Clicks
10724  if (params.preventClicks || params.preventClicksPropagation) {
10725    el.addEventListener('click', swiper.onClick, true);
10726  }
10727  if (params.cssMode) {
10728    wrapperEl.addEventListener('scroll', swiper.onScroll);
10729  }
10730
10731  // Resize handler
10732  if (params.updateOnWindowResize) {
10733    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
10734  } else {
10735    swiper.on('observerUpdate', onResize, true);
10736  }
10737}
10738
10739function detachEvents() {
10740  const swiper = this;
10741
10742  const {
10743    params, touchEvents, el, wrapperEl,
10744  } = swiper;
10745
10746  const capture = !!params.nested;
10747
10748  // Touch Events
10749  if (!Support.touch && Support.pointerEvents) {
10750    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
10751    ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
10752    ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
10753  } else {
10754    if (Support.touch) {
10755      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
10756      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
10757      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
10758      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
10759      if (touchEvents.cancel) {
10760        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
10761      }
10762    }
10763    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
10764      el.removeEventListener('mousedown', swiper.onTouchStart, false);
10765      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener('mousemove', swiper.onTouchMove, capture);
10766      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener('mouseup', swiper.onTouchEnd, false);
10767    }
10768  }
10769  // Prevent Links Clicks
10770  if (params.preventClicks || params.preventClicksPropagation) {
10771    el.removeEventListener('click', swiper.onClick, true);
10772  }
10773
10774  if (params.cssMode) {
10775    wrapperEl.removeEventListener('scroll', swiper.onScroll);
10776  }
10777
10778  // Resize handler
10779  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
10780}
10781
10782var events = {
10783  attachEvents,
10784  detachEvents,
10785};
10786
10787function setBreakpoint () {
10788  const swiper = this;
10789  const {
10790    activeIndex, initialized, loopedSlides = 0, params, $el,
10791  } = swiper;
10792  const breakpoints = params.breakpoints;
10793  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;
10794
10795  // Get breakpoint for window width and update parameters
10796  const breakpoint = swiper.getBreakpoint(breakpoints);
10797
10798  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
10799    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
10800    if (breakpointOnlyParams) {
10801      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {
10802        const paramValue = breakpointOnlyParams[param];
10803        if (typeof paramValue === 'undefined') return;
10804        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
10805          breakpointOnlyParams[param] = 'auto';
10806        } else if (param === 'slidesPerView') {
10807          breakpointOnlyParams[param] = parseFloat(paramValue);
10808        } else {
10809          breakpointOnlyParams[param] = parseInt(paramValue, 10);
10810        }
10811      });
10812    }
10813
10814    const breakpointParams = breakpointOnlyParams || swiper.originalParams;
10815    const wasMultiRow = params.slidesPerColumn > 1;
10816    const isMultiRow = breakpointParams.slidesPerColumn > 1;
10817    if (wasMultiRow && !isMultiRow) {
10818      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);
10819    } else if (!wasMultiRow && isMultiRow) {
10820      $el.addClass(`${params.containerModifierClass}multirow`);
10821      if (breakpointParams.slidesPerColumnFill === 'column') {
10822        $el.addClass(`${params.containerModifierClass}multirow-column`);
10823      }
10824    }
10825
10826    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
10827    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
10828
10829    if (directionChanged && initialized) {
10830      swiper.changeDirection();
10831    }
10832
10833    Utils.extend(swiper.params, breakpointParams);
10834
10835    Utils.extend(swiper, {
10836      allowTouchMove: swiper.params.allowTouchMove,
10837      allowSlideNext: swiper.params.allowSlideNext,
10838      allowSlidePrev: swiper.params.allowSlidePrev,
10839    });
10840
10841    swiper.currentBreakpoint = breakpoint;
10842
10843    if (needsReLoop && initialized) {
10844      swiper.loopDestroy();
10845      swiper.loopCreate();
10846      swiper.updateSlides();
10847      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
10848    }
10849
10850    swiper.emit('breakpoint', breakpointParams);
10851  }
10852}
10853
10854function getBreakpoint (breakpoints) {
10855  // Get breakpoint for window width
10856  if (!breakpoints) return undefined;
10857  let breakpoint = false;
10858
10859  const points = Object.keys(breakpoints).map((point) => {
10860    if (typeof point === 'string' && point.indexOf('@') === 0) {
10861      const minRatio = parseFloat(point.substr(1));
10862      const value = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerHeight * minRatio;
10863      return { value, point };
10864    }
10865    return { value: point, point };
10866  });
10867
10868  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
10869  for (let i = 0; i < points.length; i += 1) {
10870    const { point, value } = points[i];
10871    if (value <= ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerWidth) {
10872      breakpoint = point;
10873    }
10874  }
10875  return breakpoint || 'max';
10876}
10877
10878var breakpoints = { setBreakpoint, getBreakpoint };
10879
10880function addClasses () {
10881  const swiper = this;
10882  const {
10883    classNames, params, rtl, $el,
10884  } = swiper;
10885  const suffixes = [];
10886
10887  suffixes.push('initialized');
10888  suffixes.push(params.direction);
10889
10890  if (params.freeMode) {
10891    suffixes.push('free-mode');
10892  }
10893  if (params.autoHeight) {
10894    suffixes.push('autoheight');
10895  }
10896  if (rtl) {
10897    suffixes.push('rtl');
10898  }
10899  if (params.slidesPerColumn > 1) {
10900    suffixes.push('multirow');
10901    if (params.slidesPerColumnFill === 'column') {
10902      suffixes.push('multirow-column');
10903    }
10904  }
10905  if (Device.android) {
10906    suffixes.push('android');
10907  }
10908  if (Device.ios) {
10909    suffixes.push('ios');
10910  }
10911
10912  if (params.cssMode) {
10913    suffixes.push('css-mode');
10914  }
10915
10916  suffixes.forEach((suffix) => {
10917    classNames.push(params.containerModifierClass + suffix);
10918  });
10919
10920  $el.addClass(classNames.join(' '));
10921}
10922
10923function removeClasses () {
10924  const swiper = this;
10925  const { $el, classNames } = swiper;
10926
10927  $el.removeClass(classNames.join(' '));
10928}
10929
10930var classes = { addClasses, removeClasses };
10931
10932function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
10933  let image;
10934  function onReady() {
10935    if (callback) callback();
10936  }
10937  const isPicture = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(imageEl).parent('picture')[0];
10938
10939  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
10940    if (src) {
10941      image = new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Image();
10942      image.onload = onReady;
10943      image.onerror = onReady;
10944      if (sizes) {
10945        image.sizes = sizes;
10946      }
10947      if (srcset) {
10948        image.srcset = srcset;
10949      }
10950      if (src) {
10951        image.src = src;
10952      }
10953    } else {
10954      onReady();
10955    }
10956  } else {
10957    // image already loaded...
10958    onReady();
10959  }
10960}
10961
10962function preloadImages () {
10963  const swiper = this;
10964  swiper.imagesToLoad = swiper.$el.find('img');
10965  function onReady() {
10966    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
10967    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
10968    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
10969      if (swiper.params.updateOnImagesReady) swiper.update();
10970      swiper.emit('imagesReady');
10971    }
10972  }
10973  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
10974    const imageEl = swiper.imagesToLoad[i];
10975    swiper.loadImage(
10976      imageEl,
10977      imageEl.currentSrc || imageEl.getAttribute('src'),
10978      imageEl.srcset || imageEl.getAttribute('srcset'),
10979      imageEl.sizes || imageEl.getAttribute('sizes'),
10980      true,
10981      onReady
10982    );
10983  }
10984}
10985
10986var images = {
10987  loadImage,
10988  preloadImages,
10989};
10990
10991function checkOverflow() {
10992  const swiper = this;
10993  const params = swiper.params;
10994  const wasLocked = swiper.isLocked;
10995  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);
10996
10997  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
10998    swiper.isLocked = lastSlidePosition <= swiper.size;
10999  } else {
11000    swiper.isLocked = swiper.snapGrid.length === 1;
11001  }
11002
11003  swiper.allowSlideNext = !swiper.isLocked;
11004  swiper.allowSlidePrev = !swiper.isLocked;
11005
11006  // events
11007  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
11008
11009  if (wasLocked && wasLocked !== swiper.isLocked) {
11010    swiper.isEnd = false;
11011    if (swiper.navigation) swiper.navigation.update();
11012  }
11013}
11014
11015var checkOverflow$1 = { checkOverflow };
11016
11017var defaults = {
11018  init: true,
11019  direction: 'horizontal',
11020  touchEventsTarget: 'container',
11021  initialSlide: 0,
11022  speed: 300,
11023  cssMode: false,
11024  updateOnWindowResize: true,
11025  //
11026  preventInteractionOnTransition: false,
11027
11028  // To support iOS's swipe-to-go-back gesture (when being used in-app).
11029  edgeSwipeDetection: false,
11030  edgeSwipeThreshold: 20,
11031
11032  // Free mode
11033  freeMode: false,
11034  freeModeMomentum: true,
11035  freeModeMomentumRatio: 1,
11036  freeModeMomentumBounce: true,
11037  freeModeMomentumBounceRatio: 1,
11038  freeModeMomentumVelocityRatio: 1,
11039  freeModeSticky: false,
11040  freeModeMinimumVelocity: 0.02,
11041
11042  // Autoheight
11043  autoHeight: false,
11044
11045  // Set wrapper width
11046  setWrapperSize: false,
11047
11048  // Virtual Translate
11049  virtualTranslate: false,
11050
11051  // Effects
11052  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
11053
11054  // Breakpoints
11055  breakpoints: undefined,
11056
11057  // Slides grid
11058  spaceBetween: 0,
11059  slidesPerView: 1,
11060  slidesPerColumn: 1,
11061  slidesPerColumnFill: 'column',
11062  slidesPerGroup: 1,
11063  slidesPerGroupSkip: 0,
11064  centeredSlides: false,
11065  centeredSlidesBounds: false,
11066  slidesOffsetBefore: 0, // in px
11067  slidesOffsetAfter: 0, // in px
11068  normalizeSlideIndex: true,
11069  centerInsufficientSlides: false,
11070
11071  // Disable swiper and hide navigation when container not overflow
11072  watchOverflow: false,
11073
11074  // Round length
11075  roundLengths: false,
11076
11077  // Touches
11078  touchRatio: 1,
11079  touchAngle: 45,
11080  simulateTouch: true,
11081  shortSwipes: true,
11082  longSwipes: true,
11083  longSwipesRatio: 0.5,
11084  longSwipesMs: 300,
11085  followFinger: true,
11086  allowTouchMove: true,
11087  threshold: 0,
11088  touchMoveStopPropagation: false,
11089  touchStartPreventDefault: true,
11090  touchStartForcePreventDefault: false,
11091  touchReleaseOnEdges: false,
11092
11093  // Unique Navigation Elements
11094  uniqueNavElements: true,
11095
11096  // Resistance
11097  resistance: true,
11098  resistanceRatio: 0.85,
11099
11100  // Progress
11101  watchSlidesProgress: false,
11102  watchSlidesVisibility: false,
11103
11104  // Cursor
11105  grabCursor: false,
11106
11107  // Clicks
11108  preventClicks: true,
11109  preventClicksPropagation: true,
11110  slideToClickedSlide: false,
11111
11112  // Images
11113  preloadImages: true,
11114  updateOnImagesReady: true,
11115
11116  // loop
11117  loop: false,
11118  loopAdditionalSlides: 0,
11119  loopedSlides: null,
11120  loopFillGroupWithBlank: false,
11121
11122  // Swiping/no swiping
11123  allowSlidePrev: true,
11124  allowSlideNext: true,
11125  swipeHandler: null, // '.swipe-handler',
11126  noSwiping: true,
11127  noSwipingClass: 'swiper-no-swiping',
11128  noSwipingSelector: null,
11129
11130  // Passive Listeners
11131  passiveListeners: true,
11132
11133  // NS
11134  containerModifierClass: 'swiper-container-', // NEW
11135  slideClass: 'swiper-slide',
11136  slideBlankClass: 'swiper-slide-invisible-blank',
11137  slideActiveClass: 'swiper-slide-active',
11138  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
11139  slideVisibleClass: 'swiper-slide-visible',
11140  slideDuplicateClass: 'swiper-slide-duplicate',
11141  slideNextClass: 'swiper-slide-next',
11142  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
11143  slidePrevClass: 'swiper-slide-prev',
11144  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
11145  wrapperClass: 'swiper-wrapper',
11146
11147  // Callbacks
11148  runCallbacksOnInit: true,
11149};
11150
11151/* eslint no-param-reassign: "off" */
11152
11153const prototypes = {
11154  update,
11155  translate,
11156  transition,
11157  slide,
11158  loop,
11159  grabCursor,
11160  manipulation,
11161  events,
11162  breakpoints,
11163  checkOverflow: checkOverflow$1,
11164  classes,
11165  images,
11166};
11167
11168const extendedDefaults = {};
11169
11170class Swiper extends SwiperClass {
11171  constructor(...args) {
11172    let el;
11173    let params;
11174    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
11175      params = args[0];
11176    } else {
11177      [el, params] = args;
11178    }
11179    if (!params) params = {};
11180
11181    params = Utils.extend({}, params);
11182    if (el && !params.el) params.el = el;
11183
11184    super(params);
11185
11186    Object.keys(prototypes).forEach((prototypeGroup) => {
11187      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
11188        if (!Swiper.prototype[protoMethod]) {
11189          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
11190        }
11191      });
11192    });
11193
11194    // Swiper Instance
11195    const swiper = this;
11196    if (typeof swiper.modules === 'undefined') {
11197      swiper.modules = {};
11198    }
11199    Object.keys(swiper.modules).forEach((moduleName) => {
11200      const module = swiper.modules[moduleName];
11201      if (module.params) {
11202        const moduleParamName = Object.keys(module.params)[0];
11203        const moduleParams = module.params[moduleParamName];
11204        if (typeof moduleParams !== 'object' || moduleParams === null) return;
11205        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
11206        if (params[moduleParamName] === true) {
11207          params[moduleParamName] = { enabled: true };
11208        }
11209        if (
11210          typeof params[moduleParamName] === 'object'
11211          && !('enabled' in params[moduleParamName])
11212        ) {
11213          params[moduleParamName].enabled = true;
11214        }
11215        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };
11216      }
11217    });
11218
11219    // Extend defaults with modules params
11220    const swiperParams = Utils.extend({}, defaults);
11221    swiper.useModulesParams(swiperParams);
11222
11223    // Extend defaults with passed params
11224    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
11225    swiper.originalParams = Utils.extend({}, swiper.params);
11226    swiper.passedParams = Utils.extend({}, params);
11227
11228    // Save Dom lib
11229    swiper.$ = dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"];
11230
11231    // Find el
11232    const $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.el);
11233    el = $el[0];
11234
11235    if (!el) {
11236      return undefined;
11237    }
11238
11239    if ($el.length > 1) {
11240      const swipers = [];
11241      $el.each((index, containerEl) => {
11242        const newParams = Utils.extend({}, params, { el: containerEl });
11243        swipers.push(new Swiper(newParams));
11244      });
11245      return swipers;
11246    }
11247
11248    el.swiper = swiper;
11249    $el.data('swiper', swiper);
11250
11251    // Find Wrapper
11252    let $wrapperEl;
11253    if (el && el.shadowRoot && el.shadowRoot.querySelector) {
11254      $wrapperEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));
11255      // Children needs to return slot items
11256      $wrapperEl.children = (options) => $el.children(options);
11257    } else {
11258      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);
11259    }
11260    // Extend Swiper
11261    Utils.extend(swiper, {
11262      $el,
11263      el,
11264      $wrapperEl,
11265      wrapperEl: $wrapperEl[0],
11266
11267      // Classes
11268      classNames: [],
11269
11270      // Slides
11271      slides: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(),
11272      slidesGrid: [],
11273      snapGrid: [],
11274      slidesSizesGrid: [],
11275
11276      // isDirection
11277      isHorizontal() {
11278        return swiper.params.direction === 'horizontal';
11279      },
11280      isVertical() {
11281        return swiper.params.direction === 'vertical';
11282      },
11283      // RTL
11284      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
11285      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
11286      wrongRTL: $wrapperEl.css('display') === '-webkit-box',
11287
11288      // Indexes
11289      activeIndex: 0,
11290      realIndex: 0,
11291
11292      //
11293      isBeginning: true,
11294      isEnd: false,
11295
11296      // Props
11297      translate: 0,
11298      previousTranslate: 0,
11299      progress: 0,
11300      velocity: 0,
11301      animating: false,
11302
11303      // Locks
11304      allowSlideNext: swiper.params.allowSlideNext,
11305      allowSlidePrev: swiper.params.allowSlidePrev,
11306
11307      // Touch Events
11308      touchEvents: (function touchEvents() {
11309        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
11310        let desktop = ['mousedown', 'mousemove', 'mouseup'];
11311        if (Support.pointerEvents) {
11312          desktop = ['pointerdown', 'pointermove', 'pointerup'];
11313        }
11314        swiper.touchEventsTouch = {
11315          start: touch[0],
11316          move: touch[1],
11317          end: touch[2],
11318          cancel: touch[3],
11319        };
11320        swiper.touchEventsDesktop = {
11321          start: desktop[0],
11322          move: desktop[1],
11323          end: desktop[2],
11324        };
11325        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
11326      }()),
11327      touchEventsData: {
11328        isTouched: undefined,
11329        isMoved: undefined,
11330        allowTouchCallbacks: undefined,
11331        touchStartTime: undefined,
11332        isScrolling: undefined,
11333        currentTranslate: undefined,
11334        startTranslate: undefined,
11335        allowThresholdMove: undefined,
11336        // Form elements to match
11337        formElements: 'input, select, option, textarea, button, video, label',
11338        // Last click time
11339        lastClickTime: Utils.now(),
11340        clickTimeout: undefined,
11341        // Velocities
11342        velocities: [],
11343        allowMomentumBounce: undefined,
11344        isTouchEvent: undefined,
11345        startMoving: undefined,
11346      },
11347
11348      // Clicks
11349      allowClick: true,
11350
11351      // Touches
11352      allowTouchMove: swiper.params.allowTouchMove,
11353
11354      touches: {
11355        startX: 0,
11356        startY: 0,
11357        currentX: 0,
11358        currentY: 0,
11359        diff: 0,
11360      },
11361
11362      // Images
11363      imagesToLoad: [],
11364      imagesLoaded: 0,
11365
11366    });
11367
11368    // Install Modules
11369    swiper.useModules();
11370
11371    // Init
11372    if (swiper.params.init) {
11373      swiper.init();
11374    }
11375
11376    // Return app instance
11377    return swiper;
11378  }
11379
11380  slidesPerViewDynamic() {
11381    const swiper = this;
11382    const {
11383      params, slides, slidesGrid, size: swiperSize, activeIndex,
11384    } = swiper;
11385    let spv = 1;
11386    if (params.centeredSlides) {
11387      let slideSize = slides[activeIndex].swiperSlideSize;
11388      let breakLoop;
11389      for (let i = activeIndex + 1; i < slides.length; i += 1) {
11390        if (slides[i] && !breakLoop) {
11391          slideSize += slides[i].swiperSlideSize;
11392          spv += 1;
11393          if (slideSize > swiperSize) breakLoop = true;
11394        }
11395      }
11396      for (let i = activeIndex - 1; i >= 0; i -= 1) {
11397        if (slides[i] && !breakLoop) {
11398          slideSize += slides[i].swiperSlideSize;
11399          spv += 1;
11400          if (slideSize > swiperSize) breakLoop = true;
11401        }
11402      }
11403    } else {
11404      for (let i = activeIndex + 1; i < slides.length; i += 1) {
11405        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
11406          spv += 1;
11407        }
11408      }
11409    }
11410    return spv;
11411  }
11412
11413  update() {
11414    const swiper = this;
11415    if (!swiper || swiper.destroyed) return;
11416    const { snapGrid, params } = swiper;
11417    // Breakpoints
11418    if (params.breakpoints) {
11419      swiper.setBreakpoint();
11420    }
11421    swiper.updateSize();
11422    swiper.updateSlides();
11423    swiper.updateProgress();
11424    swiper.updateSlidesClasses();
11425
11426    function setTranslate() {
11427      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
11428      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
11429      swiper.setTranslate(newTranslate);
11430      swiper.updateActiveIndex();
11431      swiper.updateSlidesClasses();
11432    }
11433    let translated;
11434    if (swiper.params.freeMode) {
11435      setTranslate();
11436      if (swiper.params.autoHeight) {
11437        swiper.updateAutoHeight();
11438      }
11439    } else {
11440      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
11441        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
11442      } else {
11443        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
11444      }
11445      if (!translated) {
11446        setTranslate();
11447      }
11448    }
11449    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
11450      swiper.checkOverflow();
11451    }
11452    swiper.emit('update');
11453  }
11454
11455  changeDirection(newDirection, needUpdate = true) {
11456    const swiper = this;
11457    const currentDirection = swiper.params.direction;
11458    if (!newDirection) {
11459      // eslint-disable-next-line
11460      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
11461    }
11462    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
11463      return swiper;
11464    }
11465
11466    swiper.$el
11467      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)
11468      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);
11469
11470    swiper.params.direction = newDirection;
11471
11472    swiper.slides.each((slideIndex, slideEl) => {
11473      if (newDirection === 'vertical') {
11474        slideEl.style.width = '';
11475      } else {
11476        slideEl.style.height = '';
11477      }
11478    });
11479
11480    swiper.emit('changeDirection');
11481    if (needUpdate) swiper.update();
11482
11483    return swiper;
11484  }
11485
11486  init() {
11487    const swiper = this;
11488    if (swiper.initialized) return;
11489
11490    swiper.emit('beforeInit');
11491
11492    // Set breakpoint
11493    if (swiper.params.breakpoints) {
11494      swiper.setBreakpoint();
11495    }
11496
11497    // Add Classes
11498    swiper.addClasses();
11499
11500    // Create loop
11501    if (swiper.params.loop) {
11502      swiper.loopCreate();
11503    }
11504
11505    // Update size
11506    swiper.updateSize();
11507
11508    // Update slides
11509    swiper.updateSlides();
11510
11511    if (swiper.params.watchOverflow) {
11512      swiper.checkOverflow();
11513    }
11514
11515    // Set Grab Cursor
11516    if (swiper.params.grabCursor) {
11517      swiper.setGrabCursor();
11518    }
11519
11520    if (swiper.params.preloadImages) {
11521      swiper.preloadImages();
11522    }
11523
11524    // Slide To Initial Slide
11525    if (swiper.params.loop) {
11526      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
11527    } else {
11528      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
11529    }
11530
11531    // Attach events
11532    swiper.attachEvents();
11533
11534    // Init Flag
11535    swiper.initialized = true;
11536
11537    // Emit
11538    swiper.emit('init');
11539  }
11540
11541  destroy(deleteInstance = true, cleanStyles = true) {
11542    const swiper = this;
11543    const {
11544      params, $el, $wrapperEl, slides,
11545    } = swiper;
11546
11547    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
11548      return null;
11549    }
11550
11551    swiper.emit('beforeDestroy');
11552
11553    // Init Flag
11554    swiper.initialized = false;
11555
11556    // Detach events
11557    swiper.detachEvents();
11558
11559    // Destroy loop
11560    if (params.loop) {
11561      swiper.loopDestroy();
11562    }
11563
11564    // Cleanup styles
11565    if (cleanStyles) {
11566      swiper.removeClasses();
11567      $el.removeAttr('style');
11568      $wrapperEl.removeAttr('style');
11569      if (slides && slides.length) {
11570        slides
11571          .removeClass([
11572            params.slideVisibleClass,
11573            params.slideActiveClass,
11574            params.slideNextClass,
11575            params.slidePrevClass,
11576          ].join(' '))
11577          .removeAttr('style')
11578          .removeAttr('data-swiper-slide-index');
11579      }
11580    }
11581
11582    swiper.emit('destroy');
11583
11584    // Detach emitter events
11585    Object.keys(swiper.eventsListeners).forEach((eventName) => {
11586      swiper.off(eventName);
11587    });
11588
11589    if (deleteInstance !== false) {
11590      swiper.$el[0].swiper = null;
11591      swiper.$el.data('swiper', null);
11592      Utils.deleteProps(swiper);
11593    }
11594    swiper.destroyed = true;
11595
11596    return null;
11597  }
11598
11599  static extendDefaults(newDefaults) {
11600    Utils.extend(extendedDefaults, newDefaults);
11601  }
11602
11603  static get extendedDefaults() {
11604    return extendedDefaults;
11605  }
11606
11607  static get defaults() {
11608    return defaults;
11609  }
11610
11611  static get Class() {
11612    return SwiperClass;
11613  }
11614
11615  static get $() {
11616    return dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"];
11617  }
11618}
11619
11620var Device$1 = {
11621  name: 'device',
11622  proto: {
11623    device: Device,
11624  },
11625  static: {
11626    device: Device,
11627  },
11628};
11629
11630var Support$1 = {
11631  name: 'support',
11632  proto: {
11633    support: Support,
11634  },
11635  static: {
11636    support: Support,
11637  },
11638};
11639
11640const Browser = (function Browser() {
11641  function isSafari() {
11642    const ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.toLowerCase();
11643    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
11644  }
11645  return {
11646    isEdge: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.match(/Edge/g),
11647    isSafari: isSafari(),
11648    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent),
11649  };
11650}());
11651
11652var Browser$1 = {
11653  name: 'browser',
11654  proto: {
11655    browser: Browser,
11656  },
11657  static: {
11658    browser: Browser,
11659  },
11660};
11661
11662var Resize = {
11663  name: 'resize',
11664  create() {
11665    const swiper = this;
11666    Utils.extend(swiper, {
11667      resize: {
11668        resizeHandler() {
11669          if (!swiper || swiper.destroyed || !swiper.initialized) return;
11670          swiper.emit('beforeResize');
11671          swiper.emit('resize');
11672        },
11673        orientationChangeHandler() {
11674          if (!swiper || swiper.destroyed || !swiper.initialized) return;
11675          swiper.emit('orientationchange');
11676        },
11677      },
11678    });
11679  },
11680  on: {
11681    init() {
11682      const swiper = this;
11683      // Emit resize
11684      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('resize', swiper.resize.resizeHandler);
11685
11686      // Emit orientationchange
11687      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
11688    },
11689    destroy() {
11690      const swiper = this;
11691      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('resize', swiper.resize.resizeHandler);
11692      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
11693    },
11694  },
11695};
11696
11697const Observer = {
11698  func: ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].MutationObserver || ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].WebkitMutationObserver,
11699  attach(target, options = {}) {
11700    const swiper = this;
11701
11702    const ObserverFunc = Observer.func;
11703    const observer = new ObserverFunc((mutations) => {
11704      // The observerUpdate event should only be triggered
11705      // once despite the number of mutations.  Additional
11706      // triggers are redundant and are very costly
11707      if (mutations.length === 1) {
11708        swiper.emit('observerUpdate', mutations[0]);
11709        return;
11710      }
11711      const observerUpdate = function observerUpdate() {
11712        swiper.emit('observerUpdate', mutations[0]);
11713      };
11714
11715      if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].requestAnimationFrame) {
11716        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].requestAnimationFrame(observerUpdate);
11717      } else {
11718        ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].setTimeout(observerUpdate, 0);
11719      }
11720    });
11721
11722    observer.observe(target, {
11723      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
11724      childList: typeof options.childList === 'undefined' ? true : options.childList,
11725      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
11726    });
11727
11728    swiper.observer.observers.push(observer);
11729  },
11730  init() {
11731    const swiper = this;
11732    if (!Support.observer || !swiper.params.observer) return;
11733    if (swiper.params.observeParents) {
11734      const containerParents = swiper.$el.parents();
11735      for (let i = 0; i < containerParents.length; i += 1) {
11736        swiper.observer.attach(containerParents[i]);
11737      }
11738    }
11739    // Observe container
11740    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
11741
11742    // Observe wrapper
11743    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
11744  },
11745  destroy() {
11746    const swiper = this;
11747    swiper.observer.observers.forEach((observer) => {
11748      observer.disconnect();
11749    });
11750    swiper.observer.observers = [];
11751  },
11752};
11753
11754var Observer$1 = {
11755  name: 'observer',
11756  params: {
11757    observer: false,
11758    observeParents: false,
11759    observeSlideChildren: false,
11760  },
11761  create() {
11762    const swiper = this;
11763    Utils.extend(swiper, {
11764      observer: {
11765        init: Observer.init.bind(swiper),
11766        attach: Observer.attach.bind(swiper),
11767        destroy: Observer.destroy.bind(swiper),
11768        observers: [],
11769      },
11770    });
11771  },
11772  on: {
11773    init() {
11774      const swiper = this;
11775      swiper.observer.init();
11776    },
11777    destroy() {
11778      const swiper = this;
11779      swiper.observer.destroy();
11780    },
11781  },
11782};
11783
11784const Virtual = {
11785  update(force) {
11786    const swiper = this;
11787    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;
11788    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;
11789    const {
11790      from: previousFrom,
11791      to: previousTo,
11792      slides,
11793      slidesGrid: previousSlidesGrid,
11794      renderSlide,
11795      offset: previousOffset,
11796    } = swiper.virtual;
11797    swiper.updateActiveIndex();
11798    const activeIndex = swiper.activeIndex || 0;
11799
11800    let offsetProp;
11801    if (swiper.rtlTranslate) offsetProp = 'right';
11802    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
11803
11804    let slidesAfter;
11805    let slidesBefore;
11806    if (centeredSlides) {
11807      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
11808      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
11809    } else {
11810      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
11811      slidesBefore = slidesPerGroup + addSlidesAfter;
11812    }
11813    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
11814    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
11815    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
11816
11817    Utils.extend(swiper.virtual, {
11818      from,
11819      to,
11820      offset,
11821      slidesGrid: swiper.slidesGrid,
11822    });
11823
11824    function onRendered() {
11825      swiper.updateSlides();
11826      swiper.updateProgress();
11827      swiper.updateSlidesClasses();
11828      if (swiper.lazy && swiper.params.lazy.enabled) {
11829        swiper.lazy.load();
11830      }
11831    }
11832
11833    if (previousFrom === from && previousTo === to && !force) {
11834      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
11835        swiper.slides.css(offsetProp, `${offset}px`);
11836      }
11837      swiper.updateProgress();
11838      return;
11839    }
11840    if (swiper.params.virtual.renderExternal) {
11841      swiper.params.virtual.renderExternal.call(swiper, {
11842        offset,
11843        from,
11844        to,
11845        slides: (function getSlides() {
11846          const slidesToRender = [];
11847          for (let i = from; i <= to; i += 1) {
11848            slidesToRender.push(slides[i]);
11849          }
11850          return slidesToRender;
11851        }()),
11852      });
11853      onRendered();
11854      return;
11855    }
11856    const prependIndexes = [];
11857    const appendIndexes = [];
11858    if (force) {
11859      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
11860    } else {
11861      for (let i = previousFrom; i <= previousTo; i += 1) {
11862        if (i < from || i > to) {
11863          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
11864        }
11865      }
11866    }
11867    for (let i = 0; i < slides.length; i += 1) {
11868      if (i >= from && i <= to) {
11869        if (typeof previousTo === 'undefined' || force) {
11870          appendIndexes.push(i);
11871        } else {
11872          if (i > previousTo) appendIndexes.push(i);
11873          if (i < previousFrom) prependIndexes.push(i);
11874        }
11875      }
11876    }
11877    appendIndexes.forEach((index) => {
11878      swiper.$wrapperEl.append(renderSlide(slides[index], index));
11879    });
11880    prependIndexes.sort((a, b) => b - a).forEach((index) => {
11881      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
11882    });
11883    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
11884    onRendered();
11885  },
11886  renderSlide(slide, index) {
11887    const swiper = this;
11888    const params = swiper.params.virtual;
11889    if (params.cache && swiper.virtual.cache[index]) {
11890      return swiper.virtual.cache[index];
11891    }
11892    const $slideEl = params.renderSlide
11893      ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.renderSlide.call(swiper, slide, index))
11894      : Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
11895    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
11896    if (params.cache) swiper.virtual.cache[index] = $slideEl;
11897    return $slideEl;
11898  },
11899  appendSlide(slides) {
11900    const swiper = this;
11901    if (typeof slides === 'object' && 'length' in slides) {
11902      for (let i = 0; i < slides.length; i += 1) {
11903        if (slides[i]) swiper.virtual.slides.push(slides[i]);
11904      }
11905    } else {
11906      swiper.virtual.slides.push(slides);
11907    }
11908    swiper.virtual.update(true);
11909  },
11910  prependSlide(slides) {
11911    const swiper = this;
11912    const activeIndex = swiper.activeIndex;
11913    let newActiveIndex = activeIndex + 1;
11914    let numberOfNewSlides = 1;
11915
11916    if (Array.isArray(slides)) {
11917      for (let i = 0; i < slides.length; i += 1) {
11918        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
11919      }
11920      newActiveIndex = activeIndex + slides.length;
11921      numberOfNewSlides = slides.length;
11922    } else {
11923      swiper.virtual.slides.unshift(slides);
11924    }
11925    if (swiper.params.virtual.cache) {
11926      const cache = swiper.virtual.cache;
11927      const newCache = {};
11928      Object.keys(cache).forEach((cachedIndex) => {
11929        const $cachedEl = cache[cachedIndex];
11930        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
11931        if (cachedElIndex) {
11932          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
11933        }
11934        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
11935      });
11936      swiper.virtual.cache = newCache;
11937    }
11938    swiper.virtual.update(true);
11939    swiper.slideTo(newActiveIndex, 0);
11940  },
11941  removeSlide(slidesIndexes) {
11942    const swiper = this;
11943    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
11944    let activeIndex = swiper.activeIndex;
11945    if (Array.isArray(slidesIndexes)) {
11946      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
11947        swiper.virtual.slides.splice(slidesIndexes[i], 1);
11948        if (swiper.params.virtual.cache) {
11949          delete swiper.virtual.cache[slidesIndexes[i]];
11950        }
11951        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
11952        activeIndex = Math.max(activeIndex, 0);
11953      }
11954    } else {
11955      swiper.virtual.slides.splice(slidesIndexes, 1);
11956      if (swiper.params.virtual.cache) {
11957        delete swiper.virtual.cache[slidesIndexes];
11958      }
11959      if (slidesIndexes < activeIndex) activeIndex -= 1;
11960      activeIndex = Math.max(activeIndex, 0);
11961    }
11962    swiper.virtual.update(true);
11963    swiper.slideTo(activeIndex, 0);
11964  },
11965  removeAllSlides() {
11966    const swiper = this;
11967    swiper.virtual.slides = [];
11968    if (swiper.params.virtual.cache) {
11969      swiper.virtual.cache = {};
11970    }
11971    swiper.virtual.update(true);
11972    swiper.slideTo(0, 0);
11973  },
11974};
11975
11976var Virtual$1 = {
11977  name: 'virtual',
11978  params: {
11979    virtual: {
11980      enabled: false,
11981      slides: [],
11982      cache: true,
11983      renderSlide: null,
11984      renderExternal: null,
11985      addSlidesBefore: 0,
11986      addSlidesAfter: 0,
11987    },
11988  },
11989  create() {
11990    const swiper = this;
11991    Utils.extend(swiper, {
11992      virtual: {
11993        update: Virtual.update.bind(swiper),
11994        appendSlide: Virtual.appendSlide.bind(swiper),
11995        prependSlide: Virtual.prependSlide.bind(swiper),
11996        removeSlide: Virtual.removeSlide.bind(swiper),
11997        removeAllSlides: Virtual.removeAllSlides.bind(swiper),
11998        renderSlide: Virtual.renderSlide.bind(swiper),
11999        slides: swiper.params.virtual.slides,
12000        cache: {},
12001      },
12002    });
12003  },
12004  on: {
12005    beforeInit() {
12006      const swiper = this;
12007      if (!swiper.params.virtual.enabled) return;
12008      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
12009      const overwriteParams = {
12010        watchSlidesProgress: true,
12011      };
12012      Utils.extend(swiper.params, overwriteParams);
12013      Utils.extend(swiper.originalParams, overwriteParams);
12014
12015      if (!swiper.params.initialSlide) {
12016        swiper.virtual.update();
12017      }
12018    },
12019    setTranslate() {
12020      const swiper = this;
12021      if (!swiper.params.virtual.enabled) return;
12022      swiper.virtual.update();
12023    },
12024  },
12025};
12026
12027const Keyboard = {
12028  handle(event) {
12029    const swiper = this;
12030    const { rtlTranslate: rtl } = swiper;
12031    let e = event;
12032    if (e.originalEvent) e = e.originalEvent; // jquery fix
12033    const kc = e.keyCode || e.charCode;
12034    const pageUpDown = swiper.params.keyboard.pageUpDown;
12035    const isPageUp = pageUpDown && kc === 33;
12036    const isPageDown = pageUpDown && kc === 34;
12037    const isArrowLeft = kc === 37;
12038    const isArrowRight = kc === 39;
12039    const isArrowUp = kc === 38;
12040    const isArrowDown = kc === 40;
12041    // Directions locks
12042    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {
12043      return false;
12044    }
12045    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {
12046      return false;
12047    }
12048    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
12049      return undefined;
12050    }
12051    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName && (ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName.toLowerCase() === 'input' || ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].activeElement.nodeName.toLowerCase() === 'textarea')) {
12052      return undefined;
12053    }
12054    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
12055      let inView = false;
12056      // Check that swiper should be inside of visible area of window
12057      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
12058        return undefined;
12059      }
12060      const windowWidth = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerWidth;
12061      const windowHeight = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].innerHeight;
12062      const swiperOffset = swiper.$el.offset();
12063      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
12064      const swiperCoord = [
12065        [swiperOffset.left, swiperOffset.top],
12066        [swiperOffset.left + swiper.width, swiperOffset.top],
12067        [swiperOffset.left, swiperOffset.top + swiper.height],
12068        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],
12069      ];
12070      for (let i = 0; i < swiperCoord.length; i += 1) {
12071        const point = swiperCoord[i];
12072        if (
12073          point[0] >= 0 && point[0] <= windowWidth
12074          && point[1] >= 0 && point[1] <= windowHeight
12075        ) {
12076          inView = true;
12077        }
12078      }
12079      if (!inView) return undefined;
12080    }
12081    if (swiper.isHorizontal()) {
12082      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
12083        if (e.preventDefault) e.preventDefault();
12084        else e.returnValue = false;
12085      }
12086      if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl)) swiper.slideNext();
12087      if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl)) swiper.slidePrev();
12088    } else {
12089      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
12090        if (e.preventDefault) e.preventDefault();
12091        else e.returnValue = false;
12092      }
12093      if (isPageDown || isArrowDown) swiper.slideNext();
12094      if (isPageUp || isArrowUp) swiper.slidePrev();
12095    }
12096    swiper.emit('keyPress', kc);
12097    return undefined;
12098  },
12099  enable() {
12100    const swiper = this;
12101    if (swiper.keyboard.enabled) return;
12102    Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"]).on('keydown', swiper.keyboard.handle);
12103    swiper.keyboard.enabled = true;
12104  },
12105  disable() {
12106    const swiper = this;
12107    if (!swiper.keyboard.enabled) return;
12108    Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"]).off('keydown', swiper.keyboard.handle);
12109    swiper.keyboard.enabled = false;
12110  },
12111};
12112
12113var Keyboard$1 = {
12114  name: 'keyboard',
12115  params: {
12116    keyboard: {
12117      enabled: false,
12118      onlyInViewport: true,
12119      pageUpDown: true,
12120    },
12121  },
12122  create() {
12123    const swiper = this;
12124    Utils.extend(swiper, {
12125      keyboard: {
12126        enabled: false,
12127        enable: Keyboard.enable.bind(swiper),
12128        disable: Keyboard.disable.bind(swiper),
12129        handle: Keyboard.handle.bind(swiper),
12130      },
12131    });
12132  },
12133  on: {
12134    init() {
12135      const swiper = this;
12136      if (swiper.params.keyboard.enabled) {
12137        swiper.keyboard.enable();
12138      }
12139    },
12140    destroy() {
12141      const swiper = this;
12142      if (swiper.keyboard.enabled) {
12143        swiper.keyboard.disable();
12144      }
12145    },
12146  },
12147};
12148
12149function isEventSupported() {
12150  const eventName = 'onwheel';
12151  let isSupported = eventName in ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"];
12152
12153  if (!isSupported) {
12154    const element = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].createElement('div');
12155    element.setAttribute(eventName, 'return;');
12156    isSupported = typeof element[eventName] === 'function';
12157  }
12158
12159  if (!isSupported
12160    && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation
12161    && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature
12162    // always returns true in newer browsers as per the standard.
12163    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
12164    && ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature('', '') !== true
12165  ) {
12166    // This is the only way to test support for the `wheel` event in IE9+.
12167    isSupported = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].implementation.hasFeature('Events.wheel', '3.0');
12168  }
12169
12170  return isSupported;
12171}
12172const Mousewheel = {
12173  lastScrollTime: Utils.now(),
12174  lastEventBeforeSnap: undefined,
12175  recentWheelEvents: [],
12176  event() {
12177    if (ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
12178    return isEventSupported() ? 'wheel' : 'mousewheel';
12179  },
12180  normalize(e) {
12181    // Reasonable defaults
12182    const PIXEL_STEP = 10;
12183    const LINE_HEIGHT = 40;
12184    const PAGE_HEIGHT = 800;
12185
12186    let sX = 0;
12187    let sY = 0; // spinX, spinY
12188    let pX = 0;
12189    let pY = 0; // pixelX, pixelY
12190
12191    // Legacy
12192    if ('detail' in e) {
12193      sY = e.detail;
12194    }
12195    if ('wheelDelta' in e) {
12196      sY = -e.wheelDelta / 120;
12197    }
12198    if ('wheelDeltaY' in e) {
12199      sY = -e.wheelDeltaY / 120;
12200    }
12201    if ('wheelDeltaX' in e) {
12202      sX = -e.wheelDeltaX / 120;
12203    }
12204
12205    // side scrolling on FF with DOMMouseScroll
12206    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
12207      sX = sY;
12208      sY = 0;
12209    }
12210
12211    pX = sX * PIXEL_STEP;
12212    pY = sY * PIXEL_STEP;
12213
12214    if ('deltaY' in e) {
12215      pY = e.deltaY;
12216    }
12217    if ('deltaX' in e) {
12218      pX = e.deltaX;
12219    }
12220
12221    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll
12222      pX = pY;
12223      pY = 0;
12224    }
12225
12226    if ((pX || pY) && e.deltaMode) {
12227      if (e.deltaMode === 1) { // delta in LINE units
12228        pX *= LINE_HEIGHT;
12229        pY *= LINE_HEIGHT;
12230      } else { // delta in PAGE units
12231        pX *= PAGE_HEIGHT;
12232        pY *= PAGE_HEIGHT;
12233      }
12234    }
12235
12236    // Fall-back if spin cannot be determined
12237    if (pX && !sX) {
12238      sX = (pX < 1) ? -1 : 1;
12239    }
12240    if (pY && !sY) {
12241      sY = (pY < 1) ? -1 : 1;
12242    }
12243
12244    return {
12245      spinX: sX,
12246      spinY: sY,
12247      pixelX: pX,
12248      pixelY: pY,
12249    };
12250  },
12251  handleMouseEnter() {
12252    const swiper = this;
12253    swiper.mouseEntered = true;
12254  },
12255  handleMouseLeave() {
12256    const swiper = this;
12257    swiper.mouseEntered = false;
12258  },
12259  handle(event) {
12260    let e = event;
12261    const swiper = this;
12262    const params = swiper.params.mousewheel;
12263
12264    if (swiper.params.cssMode) {
12265      e.preventDefault();
12266    }
12267
12268    let target = swiper.$el;
12269    if (swiper.params.mousewheel.eventsTarged !== 'container') {
12270      target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.mousewheel.eventsTarged);
12271    }
12272    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
12273
12274    if (e.originalEvent) e = e.originalEvent; // jquery fix
12275    let delta = 0;
12276    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
12277
12278    const data = Mousewheel.normalize(e);
12279
12280    if (params.forceToAxis) {
12281      if (swiper.isHorizontal()) {
12282        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;
12283        else return true;
12284      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;
12285      else return true;
12286    } else {
12287      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
12288    }
12289
12290    if (delta === 0) return true;
12291
12292    if (params.invert) delta = -delta;
12293
12294    if (!swiper.params.freeMode) {
12295      // Register the new event in a variable which stores the relevant data
12296      const newEvent = {
12297        time: Utils.now(),
12298        delta: Math.abs(delta),
12299        direction: Math.sign(delta),
12300        raw: event,
12301      };
12302
12303      // Keep the most recent events
12304      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
12305      if (recentWheelEvents.length >= 2) {
12306        recentWheelEvents.shift(); // only store the last N events
12307      }
12308      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
12309      recentWheelEvents.push(newEvent);
12310
12311      // If there is at least one previous recorded event:
12312      //   If direction has changed or
12313      //   if the scroll is quicker than the previous one:
12314      //     Animate the slider.
12315      // Else (this is the first time the wheel is moved):
12316      //     Animate the slider.
12317      if (prevEvent) {
12318        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
12319          swiper.mousewheel.animateSlider(newEvent);
12320        }
12321      } else {
12322        swiper.mousewheel.animateSlider(newEvent);
12323      }
12324
12325      // If it's time to release the scroll:
12326      //   Return now so you don't hit the preventDefault.
12327      if (swiper.mousewheel.releaseScroll(newEvent)) {
12328        return true;
12329      }
12330    } else {
12331      // Freemode or scrollContainer:
12332
12333      // If we recently snapped after a momentum scroll, then ignore wheel events
12334      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
12335      // or if it's a new scroll (larger delta or inverse sign as last event before
12336      // an end-of-momentum snap).
12337      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };
12338      const { lastEventBeforeSnap } = swiper.mousewheel;
12339      const ignoreWheelEvents = lastEventBeforeSnap
12340        && newEvent.time < lastEventBeforeSnap.time + 500
12341        && newEvent.delta <= lastEventBeforeSnap.delta
12342        && newEvent.direction === lastEventBeforeSnap.direction;
12343      if (!ignoreWheelEvents) {
12344        swiper.mousewheel.lastEventBeforeSnap = undefined;
12345
12346        if (swiper.params.loop) {
12347          swiper.loopFix();
12348        }
12349        let position = swiper.getTranslate() + (delta * params.sensitivity);
12350        const wasBeginning = swiper.isBeginning;
12351        const wasEnd = swiper.isEnd;
12352
12353        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
12354        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
12355
12356        swiper.setTransition(0);
12357        swiper.setTranslate(position);
12358        swiper.updateProgress();
12359        swiper.updateActiveIndex();
12360        swiper.updateSlidesClasses();
12361
12362        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
12363          swiper.updateSlidesClasses();
12364        }
12365
12366        if (swiper.params.freeModeSticky) {
12367          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
12368          // the end of a momentum scroll by storing recent (N=15?) wheel events.
12369          // 1. do all N events have decreasing or same (absolute value) delta?
12370          // 2. did all N events arrive in the last M (M=500?) msecs?
12371          // 3. does the earliest event have an (absolute value) delta that's
12372          //    at least P (P=1?) larger than the most recent event's delta?
12373          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
12374          // If 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
12375          // Snap immediately and ignore remaining wheel events in this scroll.
12376          // See comment above for "remaining wheel events in this scroll" determination.
12377          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
12378          clearTimeout(swiper.mousewheel.timeout);
12379          swiper.mousewheel.timeout = undefined;
12380          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;
12381          if (recentWheelEvents.length >= 15) {
12382            recentWheelEvents.shift(); // only store the last N events
12383          }
12384          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
12385          const firstEvent = recentWheelEvents[0];
12386          recentWheelEvents.push(newEvent);
12387          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
12388            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
12389            recentWheelEvents.splice(0);
12390          } else if (recentWheelEvents.length >= 15
12391              && newEvent.time - firstEvent.time < 500
12392              && firstEvent.delta - newEvent.delta >= 1
12393              && newEvent.delta <= 6
12394          ) {
12395            // We're at the end of the deceleration of a momentum scroll, so there's no need
12396            // to wait for more events. Snap ASAP on the next tick.
12397            // Also, because there's some remaining momentum we'll bias the snap in the
12398            // direction of the ongoing scroll because it's better UX for the scroll to snap
12399            // in the same direction as the scroll instead of reversing to snap.  Therefore,
12400            // if it's already scrolled more than 20% in the current direction, keep going.
12401            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
12402            swiper.mousewheel.lastEventBeforeSnap = newEvent;
12403            recentWheelEvents.splice(0);
12404            swiper.mousewheel.timeout = Utils.nextTick(() => {
12405              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
12406            }, 0); // no delay; move on next tick
12407          }
12408          if (!swiper.mousewheel.timeout) {
12409            // if we get here, then we haven't detected the end of a momentum scroll, so
12410            // we'll consider a scroll "complete" when there haven't been any wheel events
12411            // for 500ms.
12412            swiper.mousewheel.timeout = Utils.nextTick(() => {
12413              const snapToThreshold = 0.5;
12414              swiper.mousewheel.lastEventBeforeSnap = newEvent;
12415              recentWheelEvents.splice(0);
12416              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
12417            }, 500);
12418          }
12419        }
12420
12421        // Emit event
12422        if (!ignoreWheelEvents) swiper.emit('scroll', e);
12423
12424        // Stop autoplay
12425        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
12426        // Return page scroll on edge positions
12427        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
12428      }
12429    }
12430
12431    if (e.preventDefault) e.preventDefault();
12432    else e.returnValue = false;
12433    return false;
12434  },
12435  animateSlider(newEvent) {
12436    const swiper = this;
12437    // If the movement is NOT big enough and
12438    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
12439    //   Don't go any further (avoid insignificant scroll movement).
12440    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {
12441      // Return false as a default
12442      return true;
12443    }
12444    // If user is scrolling towards the end:
12445    //   If the slider hasn't hit the latest slide or
12446    //   if the slider is a loop and
12447    //   if the slider isn't moving right now:
12448    //     Go to next slide and
12449    //     emit a scroll event.
12450    // Else (the user is scrolling towards the beginning) and
12451    // if the slider hasn't hit the first slide or
12452    // if the slider is a loop and
12453    // if the slider isn't moving right now:
12454    //   Go to prev slide and
12455    //   emit a scroll event.
12456    if (newEvent.direction < 0) {
12457      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
12458        swiper.slideNext();
12459        swiper.emit('scroll', newEvent.raw);
12460      }
12461    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
12462      swiper.slidePrev();
12463      swiper.emit('scroll', newEvent.raw);
12464    }
12465    // If you got here is because an animation has been triggered so store the current time
12466    swiper.mousewheel.lastScrollTime = (new ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].Date()).getTime();
12467    // Return false as a default
12468    return false;
12469  },
12470  releaseScroll(newEvent) {
12471    const swiper = this;
12472    const params = swiper.params.mousewheel;
12473    if (newEvent.direction < 0) {
12474      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
12475        // Return true to animate scroll on edges
12476        return true;
12477      }
12478    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
12479      // Return true to animate scroll on edges
12480      return true;
12481    }
12482    return false;
12483  },
12484  enable() {
12485    const swiper = this;
12486    const event = Mousewheel.event();
12487    if (swiper.params.cssMode) {
12488      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
12489      return true;
12490    }
12491    if (!event) return false;
12492    if (swiper.mousewheel.enabled) return false;
12493    let target = swiper.$el;
12494    if (swiper.params.mousewheel.eventsTarged !== 'container') {
12495      target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.mousewheel.eventsTarged);
12496    }
12497    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
12498    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
12499    target.on(event, swiper.mousewheel.handle);
12500    swiper.mousewheel.enabled = true;
12501    return true;
12502  },
12503  disable() {
12504    const swiper = this;
12505    const event = Mousewheel.event();
12506    if (swiper.params.cssMode) {
12507      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
12508      return true;
12509    }
12510    if (!event) return false;
12511    if (!swiper.mousewheel.enabled) return false;
12512    let target = swiper.$el;
12513    if (swiper.params.mousewheel.eventsTarged !== 'container') {
12514      target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(swiper.params.mousewheel.eventsTarged);
12515    }
12516    target.off(event, swiper.mousewheel.handle);
12517    swiper.mousewheel.enabled = false;
12518    return true;
12519  },
12520};
12521
12522var Mousewheel$1 = {
12523  name: 'mousewheel',
12524  params: {
12525    mousewheel: {
12526      enabled: false,
12527      releaseOnEdges: false,
12528      invert: false,
12529      forceToAxis: false,
12530      sensitivity: 1,
12531      eventsTarged: 'container',
12532    },
12533  },
12534  create() {
12535    const swiper = this;
12536    Utils.extend(swiper, {
12537      mousewheel: {
12538        enabled: false,
12539        enable: Mousewheel.enable.bind(swiper),
12540        disable: Mousewheel.disable.bind(swiper),
12541        handle: Mousewheel.handle.bind(swiper),
12542        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
12543        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
12544        animateSlider: Mousewheel.animateSlider.bind(swiper),
12545        releaseScroll: Mousewheel.releaseScroll.bind(swiper),
12546        lastScrollTime: Utils.now(),
12547        lastEventBeforeSnap: undefined,
12548        recentWheelEvents: [],
12549      },
12550    });
12551  },
12552  on: {
12553    init() {
12554      const swiper = this;
12555      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
12556        swiper.mousewheel.disable();
12557      }
12558      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
12559    },
12560    destroy() {
12561      const swiper = this;
12562      if (swiper.params.cssMode) {
12563        swiper.mousewheel.enable();
12564      }
12565      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
12566    },
12567  },
12568};
12569
12570const Navigation = {
12571  update() {
12572    // Update Navigation Buttons
12573    const swiper = this;
12574    const params = swiper.params.navigation;
12575
12576    if (swiper.params.loop) return;
12577    const { $nextEl, $prevEl } = swiper.navigation;
12578
12579    if ($prevEl && $prevEl.length > 0) {
12580      if (swiper.isBeginning) {
12581        $prevEl.addClass(params.disabledClass);
12582      } else {
12583        $prevEl.removeClass(params.disabledClass);
12584      }
12585      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
12586    }
12587    if ($nextEl && $nextEl.length > 0) {
12588      if (swiper.isEnd) {
12589        $nextEl.addClass(params.disabledClass);
12590      } else {
12591        $nextEl.removeClass(params.disabledClass);
12592      }
12593      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
12594    }
12595  },
12596  onPrevClick(e) {
12597    const swiper = this;
12598    e.preventDefault();
12599    if (swiper.isBeginning && !swiper.params.loop) return;
12600    swiper.slidePrev();
12601  },
12602  onNextClick(e) {
12603    const swiper = this;
12604    e.preventDefault();
12605    if (swiper.isEnd && !swiper.params.loop) return;
12606    swiper.slideNext();
12607  },
12608  init() {
12609    const swiper = this;
12610    const params = swiper.params.navigation;
12611    if (!(params.nextEl || params.prevEl)) return;
12612
12613    let $nextEl;
12614    let $prevEl;
12615    if (params.nextEl) {
12616      $nextEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.nextEl);
12617      if (
12618        swiper.params.uniqueNavElements
12619        && typeof params.nextEl === 'string'
12620        && $nextEl.length > 1
12621        && swiper.$el.find(params.nextEl).length === 1
12622      ) {
12623        $nextEl = swiper.$el.find(params.nextEl);
12624      }
12625    }
12626    if (params.prevEl) {
12627      $prevEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.prevEl);
12628      if (
12629        swiper.params.uniqueNavElements
12630        && typeof params.prevEl === 'string'
12631        && $prevEl.length > 1
12632        && swiper.$el.find(params.prevEl).length === 1
12633      ) {
12634        $prevEl = swiper.$el.find(params.prevEl);
12635      }
12636    }
12637
12638    if ($nextEl && $nextEl.length > 0) {
12639      $nextEl.on('click', swiper.navigation.onNextClick);
12640    }
12641    if ($prevEl && $prevEl.length > 0) {
12642      $prevEl.on('click', swiper.navigation.onPrevClick);
12643    }
12644
12645    Utils.extend(swiper.navigation, {
12646      $nextEl,
12647      nextEl: $nextEl && $nextEl[0],
12648      $prevEl,
12649      prevEl: $prevEl && $prevEl[0],
12650    });
12651  },
12652  destroy() {
12653    const swiper = this;
12654    const { $nextEl, $prevEl } = swiper.navigation;
12655    if ($nextEl && $nextEl.length) {
12656      $nextEl.off('click', swiper.navigation.onNextClick);
12657      $nextEl.removeClass(swiper.params.navigation.disabledClass);
12658    }
12659    if ($prevEl && $prevEl.length) {
12660      $prevEl.off('click', swiper.navigation.onPrevClick);
12661      $prevEl.removeClass(swiper.params.navigation.disabledClass);
12662    }
12663  },
12664};
12665
12666var Navigation$1 = {
12667  name: 'navigation',
12668  params: {
12669    navigation: {
12670      nextEl: null,
12671      prevEl: null,
12672
12673      hideOnClick: false,
12674      disabledClass: 'swiper-button-disabled',
12675      hiddenClass: 'swiper-button-hidden',
12676      lockClass: 'swiper-button-lock',
12677    },
12678  },
12679  create() {
12680    const swiper = this;
12681    Utils.extend(swiper, {
12682      navigation: {
12683        init: Navigation.init.bind(swiper),
12684        update: Navigation.update.bind(swiper),
12685        destroy: Navigation.destroy.bind(swiper),
12686        onNextClick: Navigation.onNextClick.bind(swiper),
12687        onPrevClick: Navigation.onPrevClick.bind(swiper),
12688      },
12689    });
12690  },
12691  on: {
12692    init() {
12693      const swiper = this;
12694      swiper.navigation.init();
12695      swiper.navigation.update();
12696    },
12697    toEdge() {
12698      const swiper = this;
12699      swiper.navigation.update();
12700    },
12701    fromEdge() {
12702      const swiper = this;
12703      swiper.navigation.update();
12704    },
12705    destroy() {
12706      const swiper = this;
12707      swiper.navigation.destroy();
12708    },
12709    click(e) {
12710      const swiper = this;
12711      const { $nextEl, $prevEl } = swiper.navigation;
12712      if (
12713        swiper.params.navigation.hideOnClick
12714        && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is($prevEl)
12715        && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).is($nextEl)
12716      ) {
12717        let isHidden;
12718        if ($nextEl) {
12719          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
12720        } else if ($prevEl) {
12721          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
12722        }
12723        if (isHidden === true) {
12724          swiper.emit('navigationShow', swiper);
12725        } else {
12726          swiper.emit('navigationHide', swiper);
12727        }
12728        if ($nextEl) {
12729          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
12730        }
12731        if ($prevEl) {
12732          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
12733        }
12734      }
12735    },
12736  },
12737};
12738
12739const Pagination = {
12740  update() {
12741    // Render || Update Pagination bullets/items
12742    const swiper = this;
12743    const rtl = swiper.rtl;
12744    const params = swiper.params.pagination;
12745    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
12746    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
12747    const $el = swiper.pagination.$el;
12748    // Current/Total
12749    let current;
12750    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
12751    if (swiper.params.loop) {
12752      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
12753      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
12754        current -= (slidesLength - (swiper.loopedSlides * 2));
12755      }
12756      if (current > total - 1) current -= total;
12757      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
12758    } else if (typeof swiper.snapIndex !== 'undefined') {
12759      current = swiper.snapIndex;
12760    } else {
12761      current = swiper.activeIndex || 0;
12762    }
12763    // Types
12764    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
12765      const bullets = swiper.pagination.bullets;
12766      let firstIndex;
12767      let lastIndex;
12768      let midIndex;
12769      if (params.dynamicBullets) {
12770        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
12771        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
12772        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
12773          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
12774          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
12775            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
12776          } else if (swiper.pagination.dynamicBulletIndex < 0) {
12777            swiper.pagination.dynamicBulletIndex = 0;
12778          }
12779        }
12780        firstIndex = current - swiper.pagination.dynamicBulletIndex;
12781        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
12782        midIndex = (lastIndex + firstIndex) / 2;
12783      }
12784      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
12785      if ($el.length > 1) {
12786        bullets.each((index, bullet) => {
12787          const $bullet = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(bullet);
12788          const bulletIndex = $bullet.index();
12789          if (bulletIndex === current) {
12790            $bullet.addClass(params.bulletActiveClass);
12791          }
12792          if (params.dynamicBullets) {
12793            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
12794              $bullet.addClass(`${params.bulletActiveClass}-main`);
12795            }
12796            if (bulletIndex === firstIndex) {
12797              $bullet
12798                .prev()
12799                .addClass(`${params.bulletActiveClass}-prev`)
12800                .prev()
12801                .addClass(`${params.bulletActiveClass}-prev-prev`);
12802            }
12803            if (bulletIndex === lastIndex) {
12804              $bullet
12805                .next()
12806                .addClass(`${params.bulletActiveClass}-next`)
12807                .next()
12808                .addClass(`${params.bulletActiveClass}-next-next`);
12809            }
12810          }
12811        });
12812      } else {
12813        const $bullet = bullets.eq(current);
12814        const bulletIndex = $bullet.index();
12815        $bullet.addClass(params.bulletActiveClass);
12816        if (params.dynamicBullets) {
12817          const $firstDisplayedBullet = bullets.eq(firstIndex);
12818          const $lastDisplayedBullet = bullets.eq(lastIndex);
12819          for (let i = firstIndex; i <= lastIndex; i += 1) {
12820            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
12821          }
12822          if (swiper.params.loop) {
12823            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
12824              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
12825                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
12826              }
12827              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
12828            } else {
12829              $firstDisplayedBullet
12830                .prev()
12831                .addClass(`${params.bulletActiveClass}-prev`)
12832                .prev()
12833                .addClass(`${params.bulletActiveClass}-prev-prev`);
12834              $lastDisplayedBullet
12835                .next()
12836                .addClass(`${params.bulletActiveClass}-next`)
12837                .next()
12838                .addClass(`${params.bulletActiveClass}-next-next`);
12839            }
12840          } else {
12841            $firstDisplayedBullet
12842              .prev()
12843              .addClass(`${params.bulletActiveClass}-prev`)
12844              .prev()
12845              .addClass(`${params.bulletActiveClass}-prev-prev`);
12846            $lastDisplayedBullet
12847              .next()
12848              .addClass(`${params.bulletActiveClass}-next`)
12849              .next()
12850              .addClass(`${params.bulletActiveClass}-next-next`);
12851          }
12852        }
12853      }
12854      if (params.dynamicBullets) {
12855        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
12856        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
12857        const offsetProp = rtl ? 'right' : 'left';
12858        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
12859      }
12860    }
12861    if (params.type === 'fraction') {
12862      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
12863      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
12864    }
12865    if (params.type === 'progressbar') {
12866      let progressbarDirection;
12867      if (params.progressbarOpposite) {
12868        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
12869      } else {
12870        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
12871      }
12872      const scale = (current + 1) / total;
12873      let scaleX = 1;
12874      let scaleY = 1;
12875      if (progressbarDirection === 'horizontal') {
12876        scaleX = scale;
12877      } else {
12878        scaleY = scale;
12879      }
12880      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
12881    }
12882    if (params.type === 'custom' && params.renderCustom) {
12883      $el.html(params.renderCustom(swiper, current + 1, total));
12884      swiper.emit('paginationRender', swiper, $el[0]);
12885    } else {
12886      swiper.emit('paginationUpdate', swiper, $el[0]);
12887    }
12888    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
12889  },
12890  render() {
12891    // Render Container
12892    const swiper = this;
12893    const params = swiper.params.pagination;
12894    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
12895    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
12896
12897    const $el = swiper.pagination.$el;
12898    let paginationHTML = '';
12899    if (params.type === 'bullets') {
12900      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
12901      for (let i = 0; i < numberOfBullets; i += 1) {
12902        if (params.renderBullet) {
12903          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
12904        } else {
12905          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
12906        }
12907      }
12908      $el.html(paginationHTML);
12909      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);
12910    }
12911    if (params.type === 'fraction') {
12912      if (params.renderFraction) {
12913        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
12914      } else {
12915        paginationHTML = `<span class="${params.currentClass}"></span>`
12916        + ' / '
12917        + `<span class="${params.totalClass}"></span>`;
12918      }
12919      $el.html(paginationHTML);
12920    }
12921    if (params.type === 'progressbar') {
12922      if (params.renderProgressbar) {
12923        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
12924      } else {
12925        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
12926      }
12927      $el.html(paginationHTML);
12928    }
12929    if (params.type !== 'custom') {
12930      swiper.emit('paginationRender', swiper.pagination.$el[0]);
12931    }
12932  },
12933  init() {
12934    const swiper = this;
12935    const params = swiper.params.pagination;
12936    if (!params.el) return;
12937
12938    let $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.el);
12939    if ($el.length === 0) return;
12940
12941    if (
12942      swiper.params.uniqueNavElements
12943      && typeof params.el === 'string'
12944      && $el.length > 1
12945    ) {
12946      $el = swiper.$el.find(params.el);
12947    }
12948
12949    if (params.type === 'bullets' && params.clickable) {
12950      $el.addClass(params.clickableClass);
12951    }
12952
12953    $el.addClass(params.modifierClass + params.type);
12954
12955    if (params.type === 'bullets' && params.dynamicBullets) {
12956      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
12957      swiper.pagination.dynamicBulletIndex = 0;
12958      if (params.dynamicMainBullets < 1) {
12959        params.dynamicMainBullets = 1;
12960      }
12961    }
12962    if (params.type === 'progressbar' && params.progressbarOpposite) {
12963      $el.addClass(params.progressbarOppositeClass);
12964    }
12965
12966    if (params.clickable) {
12967      $el.on('click', `.${params.bulletClass}`, function onClick(e) {
12968        e.preventDefault();
12969        let index = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(this).index() * swiper.params.slidesPerGroup;
12970        if (swiper.params.loop) index += swiper.loopedSlides;
12971        swiper.slideTo(index);
12972      });
12973    }
12974
12975    Utils.extend(swiper.pagination, {
12976      $el,
12977      el: $el[0],
12978    });
12979  },
12980  destroy() {
12981    const swiper = this;
12982    const params = swiper.params.pagination;
12983    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
12984    const $el = swiper.pagination.$el;
12985
12986    $el.removeClass(params.hiddenClass);
12987    $el.removeClass(params.modifierClass + params.type);
12988    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
12989    if (params.clickable) {
12990      $el.off('click', `.${params.bulletClass}`);
12991    }
12992  },
12993};
12994
12995var Pagination$1 = {
12996  name: 'pagination',
12997  params: {
12998    pagination: {
12999      el: null,
13000      bulletElement: 'span',
13001      clickable: false,
13002      hideOnClick: false,
13003      renderBullet: null,
13004      renderProgressbar: null,
13005      renderFraction: null,
13006      renderCustom: null,
13007      progressbarOpposite: false,
13008      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
13009      dynamicBullets: false,
13010      dynamicMainBullets: 1,
13011      formatFractionCurrent: (number) => number,
13012      formatFractionTotal: (number) => number,
13013      bulletClass: 'swiper-pagination-bullet',
13014      bulletActiveClass: 'swiper-pagination-bullet-active',
13015      modifierClass: 'swiper-pagination-', // NEW
13016      currentClass: 'swiper-pagination-current',
13017      totalClass: 'swiper-pagination-total',
13018      hiddenClass: 'swiper-pagination-hidden',
13019      progressbarFillClass: 'swiper-pagination-progressbar-fill',
13020      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
13021      clickableClass: 'swiper-pagination-clickable', // NEW
13022      lockClass: 'swiper-pagination-lock',
13023    },
13024  },
13025  create() {
13026    const swiper = this;
13027    Utils.extend(swiper, {
13028      pagination: {
13029        init: Pagination.init.bind(swiper),
13030        render: Pagination.render.bind(swiper),
13031        update: Pagination.update.bind(swiper),
13032        destroy: Pagination.destroy.bind(swiper),
13033        dynamicBulletIndex: 0,
13034      },
13035    });
13036  },
13037  on: {
13038    init() {
13039      const swiper = this;
13040      swiper.pagination.init();
13041      swiper.pagination.render();
13042      swiper.pagination.update();
13043    },
13044    activeIndexChange() {
13045      const swiper = this;
13046      if (swiper.params.loop) {
13047        swiper.pagination.update();
13048      } else if (typeof swiper.snapIndex === 'undefined') {
13049        swiper.pagination.update();
13050      }
13051    },
13052    snapIndexChange() {
13053      const swiper = this;
13054      if (!swiper.params.loop) {
13055        swiper.pagination.update();
13056      }
13057    },
13058    slidesLengthChange() {
13059      const swiper = this;
13060      if (swiper.params.loop) {
13061        swiper.pagination.render();
13062        swiper.pagination.update();
13063      }
13064    },
13065    snapGridLengthChange() {
13066      const swiper = this;
13067      if (!swiper.params.loop) {
13068        swiper.pagination.render();
13069        swiper.pagination.update();
13070      }
13071    },
13072    destroy() {
13073      const swiper = this;
13074      swiper.pagination.destroy();
13075    },
13076    click(e) {
13077      const swiper = this;
13078      if (
13079        swiper.params.pagination.el
13080        && swiper.params.pagination.hideOnClick
13081        && swiper.pagination.$el.length > 0
13082        && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).hasClass(swiper.params.pagination.bulletClass)
13083      ) {
13084        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
13085        if (isHidden === true) {
13086          swiper.emit('paginationShow', swiper);
13087        } else {
13088          swiper.emit('paginationHide', swiper);
13089        }
13090        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
13091      }
13092    },
13093  },
13094};
13095
13096const Scrollbar = {
13097  setTranslate() {
13098    const swiper = this;
13099    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
13100    const { scrollbar, rtlTranslate: rtl, progress } = swiper;
13101    const {
13102      dragSize, trackSize, $dragEl, $el,
13103    } = scrollbar;
13104    const params = swiper.params.scrollbar;
13105
13106    let newSize = dragSize;
13107    let newPos = (trackSize - dragSize) * progress;
13108    if (rtl) {
13109      newPos = -newPos;
13110      if (newPos > 0) {
13111        newSize = dragSize - newPos;
13112        newPos = 0;
13113      } else if (-newPos + dragSize > trackSize) {
13114        newSize = trackSize + newPos;
13115      }
13116    } else if (newPos < 0) {
13117      newSize = dragSize + newPos;
13118      newPos = 0;
13119    } else if (newPos + dragSize > trackSize) {
13120      newSize = trackSize - newPos;
13121    }
13122    if (swiper.isHorizontal()) {
13123      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
13124      $dragEl[0].style.width = `${newSize}px`;
13125    } else {
13126      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
13127      $dragEl[0].style.height = `${newSize}px`;
13128    }
13129    if (params.hide) {
13130      clearTimeout(swiper.scrollbar.timeout);
13131      $el[0].style.opacity = 1;
13132      swiper.scrollbar.timeout = setTimeout(() => {
13133        $el[0].style.opacity = 0;
13134        $el.transition(400);
13135      }, 1000);
13136    }
13137  },
13138  setTransition(duration) {
13139    const swiper = this;
13140    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
13141    swiper.scrollbar.$dragEl.transition(duration);
13142  },
13143  updateSize() {
13144    const swiper = this;
13145    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
13146
13147    const { scrollbar } = swiper;
13148    const { $dragEl, $el } = scrollbar;
13149
13150    $dragEl[0].style.width = '';
13151    $dragEl[0].style.height = '';
13152    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
13153
13154    const divider = swiper.size / swiper.virtualSize;
13155    const moveDivider = divider * (trackSize / swiper.size);
13156    let dragSize;
13157    if (swiper.params.scrollbar.dragSize === 'auto') {
13158      dragSize = trackSize * divider;
13159    } else {
13160      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
13161    }
13162
13163    if (swiper.isHorizontal()) {
13164      $dragEl[0].style.width = `${dragSize}px`;
13165    } else {
13166      $dragEl[0].style.height = `${dragSize}px`;
13167    }
13168
13169    if (divider >= 1) {
13170      $el[0].style.display = 'none';
13171    } else {
13172      $el[0].style.display = '';
13173    }
13174    if (swiper.params.scrollbar.hide) {
13175      $el[0].style.opacity = 0;
13176    }
13177    Utils.extend(scrollbar, {
13178      trackSize,
13179      divider,
13180      moveDivider,
13181      dragSize,
13182    });
13183    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
13184  },
13185  getPointerPosition(e) {
13186    const swiper = this;
13187    if (swiper.isHorizontal()) {
13188      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);
13189    }
13190    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);
13191  },
13192  setDragPosition(e) {
13193    const swiper = this;
13194    const { scrollbar, rtlTranslate: rtl } = swiper;
13195    const {
13196      $el,
13197      dragSize,
13198      trackSize,
13199      dragStartPos,
13200    } = scrollbar;
13201
13202    let positionRatio;
13203    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
13204      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
13205    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
13206    if (rtl) {
13207      positionRatio = 1 - positionRatio;
13208    }
13209
13210    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
13211
13212    swiper.updateProgress(position);
13213    swiper.setTranslate(position);
13214    swiper.updateActiveIndex();
13215    swiper.updateSlidesClasses();
13216  },
13217  onDragStart(e) {
13218    const swiper = this;
13219    const params = swiper.params.scrollbar;
13220    const { scrollbar, $wrapperEl } = swiper;
13221    const { $el, $dragEl } = scrollbar;
13222    swiper.scrollbar.isTouched = true;
13223    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
13224      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
13225    e.preventDefault();
13226    e.stopPropagation();
13227
13228    $wrapperEl.transition(100);
13229    $dragEl.transition(100);
13230    scrollbar.setDragPosition(e);
13231
13232    clearTimeout(swiper.scrollbar.dragTimeout);
13233
13234    $el.transition(0);
13235    if (params.hide) {
13236      $el.css('opacity', 1);
13237    }
13238    if (swiper.params.cssMode) {
13239      swiper.$wrapperEl.css('scroll-snap-type', 'none');
13240    }
13241    swiper.emit('scrollbarDragStart', e);
13242  },
13243  onDragMove(e) {
13244    const swiper = this;
13245    const { scrollbar, $wrapperEl } = swiper;
13246    const { $el, $dragEl } = scrollbar;
13247
13248    if (!swiper.scrollbar.isTouched) return;
13249    if (e.preventDefault) e.preventDefault();
13250    else e.returnValue = false;
13251    scrollbar.setDragPosition(e);
13252    $wrapperEl.transition(0);
13253    $el.transition(0);
13254    $dragEl.transition(0);
13255    swiper.emit('scrollbarDragMove', e);
13256  },
13257  onDragEnd(e) {
13258    const swiper = this;
13259
13260    const params = swiper.params.scrollbar;
13261    const { scrollbar, $wrapperEl } = swiper;
13262    const { $el } = scrollbar;
13263
13264    if (!swiper.scrollbar.isTouched) return;
13265    swiper.scrollbar.isTouched = false;
13266    if (swiper.params.cssMode) {
13267      swiper.$wrapperEl.css('scroll-snap-type', '');
13268      $wrapperEl.transition('');
13269    }
13270    if (params.hide) {
13271      clearTimeout(swiper.scrollbar.dragTimeout);
13272      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {
13273        $el.css('opacity', 0);
13274        $el.transition(400);
13275      }, 1000);
13276    }
13277    swiper.emit('scrollbarDragEnd', e);
13278    if (params.snapOnRelease) {
13279      swiper.slideToClosest();
13280    }
13281  },
13282  enableDraggable() {
13283    const swiper = this;
13284    if (!swiper.params.scrollbar.el) return;
13285    const {
13286      scrollbar, touchEventsTouch, touchEventsDesktop, params,
13287    } = swiper;
13288    const $el = scrollbar.$el;
13289    const target = $el[0];
13290    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
13291    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
13292    if (!Support.touch) {
13293      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
13294      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
13295      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
13296    } else {
13297      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
13298      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
13299      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
13300    }
13301  },
13302  disableDraggable() {
13303    const swiper = this;
13304    if (!swiper.params.scrollbar.el) return;
13305    const {
13306      scrollbar, touchEventsTouch, touchEventsDesktop, params,
13307    } = swiper;
13308    const $el = scrollbar.$el;
13309    const target = $el[0];
13310    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
13311    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
13312    if (!Support.touch) {
13313      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
13314      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
13315      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
13316    } else {
13317      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
13318      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
13319      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
13320    }
13321  },
13322  init() {
13323    const swiper = this;
13324    if (!swiper.params.scrollbar.el) return;
13325    const { scrollbar, $el: $swiperEl } = swiper;
13326    const params = swiper.params.scrollbar;
13327
13328    let $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(params.el);
13329    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
13330      $el = $swiperEl.find(params.el);
13331    }
13332
13333    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
13334    if ($dragEl.length === 0) {
13335      $dragEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
13336      $el.append($dragEl);
13337    }
13338
13339    Utils.extend(scrollbar, {
13340      $el,
13341      el: $el[0],
13342      $dragEl,
13343      dragEl: $dragEl[0],
13344    });
13345
13346    if (params.draggable) {
13347      scrollbar.enableDraggable();
13348    }
13349  },
13350  destroy() {
13351    const swiper = this;
13352    swiper.scrollbar.disableDraggable();
13353  },
13354};
13355
13356var Scrollbar$1 = {
13357  name: 'scrollbar',
13358  params: {
13359    scrollbar: {
13360      el: null,
13361      dragSize: 'auto',
13362      hide: false,
13363      draggable: false,
13364      snapOnRelease: true,
13365      lockClass: 'swiper-scrollbar-lock',
13366      dragClass: 'swiper-scrollbar-drag',
13367    },
13368  },
13369  create() {
13370    const swiper = this;
13371    Utils.extend(swiper, {
13372      scrollbar: {
13373        init: Scrollbar.init.bind(swiper),
13374        destroy: Scrollbar.destroy.bind(swiper),
13375        updateSize: Scrollbar.updateSize.bind(swiper),
13376        setTranslate: Scrollbar.setTranslate.bind(swiper),
13377        setTransition: Scrollbar.setTransition.bind(swiper),
13378        enableDraggable: Scrollbar.enableDraggable.bind(swiper),
13379        disableDraggable: Scrollbar.disableDraggable.bind(swiper),
13380        setDragPosition: Scrollbar.setDragPosition.bind(swiper),
13381        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
13382        onDragStart: Scrollbar.onDragStart.bind(swiper),
13383        onDragMove: Scrollbar.onDragMove.bind(swiper),
13384        onDragEnd: Scrollbar.onDragEnd.bind(swiper),
13385        isTouched: false,
13386        timeout: null,
13387        dragTimeout: null,
13388      },
13389    });
13390  },
13391  on: {
13392    init() {
13393      const swiper = this;
13394      swiper.scrollbar.init();
13395      swiper.scrollbar.updateSize();
13396      swiper.scrollbar.setTranslate();
13397    },
13398    update() {
13399      const swiper = this;
13400      swiper.scrollbar.updateSize();
13401    },
13402    resize() {
13403      const swiper = this;
13404      swiper.scrollbar.updateSize();
13405    },
13406    observerUpdate() {
13407      const swiper = this;
13408      swiper.scrollbar.updateSize();
13409    },
13410    setTranslate() {
13411      const swiper = this;
13412      swiper.scrollbar.setTranslate();
13413    },
13414    setTransition(duration) {
13415      const swiper = this;
13416      swiper.scrollbar.setTransition(duration);
13417    },
13418    destroy() {
13419      const swiper = this;
13420      swiper.scrollbar.destroy();
13421    },
13422  },
13423};
13424
13425const Parallax = {
13426  setTransform(el, progress) {
13427    const swiper = this;
13428    const { rtl } = swiper;
13429
13430    const $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(el);
13431    const rtlFactor = rtl ? -1 : 1;
13432
13433    const p = $el.attr('data-swiper-parallax') || '0';
13434    let x = $el.attr('data-swiper-parallax-x');
13435    let y = $el.attr('data-swiper-parallax-y');
13436    const scale = $el.attr('data-swiper-parallax-scale');
13437    const opacity = $el.attr('data-swiper-parallax-opacity');
13438
13439    if (x || y) {
13440      x = x || '0';
13441      y = y || '0';
13442    } else if (swiper.isHorizontal()) {
13443      x = p;
13444      y = '0';
13445    } else {
13446      y = p;
13447      x = '0';
13448    }
13449
13450    if ((x).indexOf('%') >= 0) {
13451      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
13452    } else {
13453      x = `${x * progress * rtlFactor}px`;
13454    }
13455    if ((y).indexOf('%') >= 0) {
13456      y = `${parseInt(y, 10) * progress}%`;
13457    } else {
13458      y = `${y * progress}px`;
13459    }
13460
13461    if (typeof opacity !== 'undefined' && opacity !== null) {
13462      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
13463      $el[0].style.opacity = currentOpacity;
13464    }
13465    if (typeof scale === 'undefined' || scale === null) {
13466      $el.transform(`translate3d(${x}, ${y}, 0px)`);
13467    } else {
13468      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
13469      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
13470    }
13471  },
13472  setTranslate() {
13473    const swiper = this;
13474    const {
13475      $el, slides, progress, snapGrid,
13476    } = swiper;
13477    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
13478      .each((index, el) => {
13479        swiper.parallax.setTransform(el, progress);
13480      });
13481    slides.each((slideIndex, slideEl) => {
13482      let slideProgress = slideEl.progress;
13483      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
13484        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
13485      }
13486      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
13487      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
13488        .each((index, el) => {
13489          swiper.parallax.setTransform(el, slideProgress);
13490        });
13491    });
13492  },
13493  setTransition(duration = this.params.speed) {
13494    const swiper = this;
13495    const { $el } = swiper;
13496    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
13497      .each((index, parallaxEl) => {
13498        const $parallaxEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(parallaxEl);
13499        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
13500        if (duration === 0) parallaxDuration = 0;
13501        $parallaxEl.transition(parallaxDuration);
13502      });
13503  },
13504};
13505
13506var Parallax$1 = {
13507  name: 'parallax',
13508  params: {
13509    parallax: {
13510      enabled: false,
13511    },
13512  },
13513  create() {
13514    const swiper = this;
13515    Utils.extend(swiper, {
13516      parallax: {
13517        setTransform: Parallax.setTransform.bind(swiper),
13518        setTranslate: Parallax.setTranslate.bind(swiper),
13519        setTransition: Parallax.setTransition.bind(swiper),
13520      },
13521    });
13522  },
13523  on: {
13524    beforeInit() {
13525      const swiper = this;
13526      if (!swiper.params.parallax.enabled) return;
13527      swiper.params.watchSlidesProgress = true;
13528      swiper.originalParams.watchSlidesProgress = true;
13529    },
13530    init() {
13531      const swiper = this;
13532      if (!swiper.params.parallax.enabled) return;
13533      swiper.parallax.setTranslate();
13534    },
13535    setTranslate() {
13536      const swiper = this;
13537      if (!swiper.params.parallax.enabled) return;
13538      swiper.parallax.setTranslate();
13539    },
13540    setTransition(duration) {
13541      const swiper = this;
13542      if (!swiper.params.parallax.enabled) return;
13543      swiper.parallax.setTransition(duration);
13544    },
13545  },
13546};
13547
13548const Zoom = {
13549  // Calc Scale From Multi-touches
13550  getDistanceBetweenTouches(e) {
13551    if (e.targetTouches.length < 2) return 1;
13552    const x1 = e.targetTouches[0].pageX;
13553    const y1 = e.targetTouches[0].pageY;
13554    const x2 = e.targetTouches[1].pageX;
13555    const y2 = e.targetTouches[1].pageY;
13556    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));
13557    return distance;
13558  },
13559  // Events
13560  onGestureStart(e) {
13561    const swiper = this;
13562    const params = swiper.params.zoom;
13563    const zoom = swiper.zoom;
13564    const { gesture } = zoom;
13565    zoom.fakeGestureTouched = false;
13566    zoom.fakeGestureMoved = false;
13567    if (!Support.gestures) {
13568      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
13569        return;
13570      }
13571      zoom.fakeGestureTouched = true;
13572      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
13573    }
13574    if (!gesture.$slideEl || !gesture.$slideEl.length) {
13575      gesture.$slideEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target).closest(`.${swiper.params.slideClass}`);
13576      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
13577      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
13578      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
13579      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
13580      if (gesture.$imageWrapEl.length === 0) {
13581        gesture.$imageEl = undefined;
13582        return;
13583      }
13584    }
13585    if (gesture.$imageEl) {
13586      gesture.$imageEl.transition(0);
13587    }
13588    swiper.zoom.isScaling = true;
13589  },
13590  onGestureChange(e) {
13591    const swiper = this;
13592    const params = swiper.params.zoom;
13593    const zoom = swiper.zoom;
13594    const { gesture } = zoom;
13595    if (!Support.gestures) {
13596      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
13597        return;
13598      }
13599      zoom.fakeGestureMoved = true;
13600      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
13601    }
13602    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13603    if (Support.gestures) {
13604      zoom.scale = e.scale * zoom.currentScale;
13605    } else {
13606      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
13607    }
13608    if (zoom.scale > gesture.maxRatio) {
13609      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);
13610    }
13611    if (zoom.scale < params.minRatio) {
13612      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);
13613    }
13614    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
13615  },
13616  onGestureEnd(e) {
13617    const swiper = this;
13618    const params = swiper.params.zoom;
13619    const zoom = swiper.zoom;
13620    const { gesture } = zoom;
13621    if (!Support.gestures) {
13622      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
13623        return;
13624      }
13625      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
13626        return;
13627      }
13628      zoom.fakeGestureTouched = false;
13629      zoom.fakeGestureMoved = false;
13630    }
13631    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13632    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
13633    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
13634    zoom.currentScale = zoom.scale;
13635    zoom.isScaling = false;
13636    if (zoom.scale === 1) gesture.$slideEl = undefined;
13637  },
13638  onTouchStart(e) {
13639    const swiper = this;
13640    const zoom = swiper.zoom;
13641    const { gesture, image } = zoom;
13642    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13643    if (image.isTouched) return;
13644    if (Device.android && e.cancelable) e.preventDefault();
13645    image.isTouched = true;
13646    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
13647    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
13648  },
13649  onTouchMove(e) {
13650    const swiper = this;
13651    const zoom = swiper.zoom;
13652    const { gesture, image, velocity } = zoom;
13653    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13654    swiper.allowClick = false;
13655    if (!image.isTouched || !gesture.$slideEl) return;
13656
13657    if (!image.isMoved) {
13658      image.width = gesture.$imageEl[0].offsetWidth;
13659      image.height = gesture.$imageEl[0].offsetHeight;
13660      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
13661      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
13662      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
13663      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
13664      gesture.$imageWrapEl.transition(0);
13665      if (swiper.rtl) {
13666        image.startX = -image.startX;
13667        image.startY = -image.startY;
13668      }
13669    }
13670    // Define if we need image drag
13671    const scaledWidth = image.width * zoom.scale;
13672    const scaledHeight = image.height * zoom.scale;
13673
13674    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
13675
13676    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
13677    image.maxX = -image.minX;
13678    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
13679    image.maxY = -image.minY;
13680
13681    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
13682    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
13683
13684    if (!image.isMoved && !zoom.isScaling) {
13685      if (
13686        swiper.isHorizontal()
13687        && (
13688          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
13689          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
13690        )
13691      ) {
13692        image.isTouched = false;
13693        return;
13694      } if (
13695        !swiper.isHorizontal()
13696        && (
13697          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
13698          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
13699        )
13700      ) {
13701        image.isTouched = false;
13702        return;
13703      }
13704    }
13705    if (e.cancelable) {
13706      e.preventDefault();
13707    }
13708    e.stopPropagation();
13709
13710    image.isMoved = true;
13711    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
13712    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
13713
13714    if (image.currentX < image.minX) {
13715      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);
13716    }
13717    if (image.currentX > image.maxX) {
13718      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);
13719    }
13720
13721    if (image.currentY < image.minY) {
13722      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);
13723    }
13724    if (image.currentY > image.maxY) {
13725      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);
13726    }
13727
13728    // Velocity
13729    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
13730    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
13731    if (!velocity.prevTime) velocity.prevTime = Date.now();
13732    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
13733    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
13734    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
13735    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
13736    velocity.prevPositionX = image.touchesCurrent.x;
13737    velocity.prevPositionY = image.touchesCurrent.y;
13738    velocity.prevTime = Date.now();
13739
13740    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
13741  },
13742  onTouchEnd() {
13743    const swiper = this;
13744    const zoom = swiper.zoom;
13745    const { gesture, image, velocity } = zoom;
13746    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13747    if (!image.isTouched || !image.isMoved) {
13748      image.isTouched = false;
13749      image.isMoved = false;
13750      return;
13751    }
13752    image.isTouched = false;
13753    image.isMoved = false;
13754    let momentumDurationX = 300;
13755    let momentumDurationY = 300;
13756    const momentumDistanceX = velocity.x * momentumDurationX;
13757    const newPositionX = image.currentX + momentumDistanceX;
13758    const momentumDistanceY = velocity.y * momentumDurationY;
13759    const newPositionY = image.currentY + momentumDistanceY;
13760
13761    // Fix duration
13762    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
13763    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
13764    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
13765
13766    image.currentX = newPositionX;
13767    image.currentY = newPositionY;
13768
13769    // Define if we need image drag
13770    const scaledWidth = image.width * zoom.scale;
13771    const scaledHeight = image.height * zoom.scale;
13772    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
13773    image.maxX = -image.minX;
13774    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
13775    image.maxY = -image.minY;
13776    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
13777    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
13778
13779    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
13780  },
13781  onTransitionEnd() {
13782    const swiper = this;
13783    const zoom = swiper.zoom;
13784    const { gesture } = zoom;
13785    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
13786      if (gesture.$imageEl) {
13787        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
13788      }
13789      if (gesture.$imageWrapEl) {
13790        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
13791      }
13792
13793      zoom.scale = 1;
13794      zoom.currentScale = 1;
13795
13796      gesture.$slideEl = undefined;
13797      gesture.$imageEl = undefined;
13798      gesture.$imageWrapEl = undefined;
13799    }
13800  },
13801  // Toggle Zoom
13802  toggle(e) {
13803    const swiper = this;
13804    const zoom = swiper.zoom;
13805
13806    if (zoom.scale && zoom.scale !== 1) {
13807      // Zoom Out
13808      zoom.out();
13809    } else {
13810      // Zoom In
13811      zoom.in(e);
13812    }
13813  },
13814  in(e) {
13815    const swiper = this;
13816
13817    const zoom = swiper.zoom;
13818    const params = swiper.params.zoom;
13819    const { gesture, image } = zoom;
13820
13821    if (!gesture.$slideEl) {
13822      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
13823        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
13824      } else {
13825        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
13826      }
13827      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
13828      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
13829    }
13830    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13831
13832    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
13833
13834    let touchX;
13835    let touchY;
13836    let offsetX;
13837    let offsetY;
13838    let diffX;
13839    let diffY;
13840    let translateX;
13841    let translateY;
13842    let imageWidth;
13843    let imageHeight;
13844    let scaledWidth;
13845    let scaledHeight;
13846    let translateMinX;
13847    let translateMinY;
13848    let translateMaxX;
13849    let translateMaxY;
13850    let slideWidth;
13851    let slideHeight;
13852
13853    if (typeof image.touchesStart.x === 'undefined' && e) {
13854      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
13855      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
13856    } else {
13857      touchX = image.touchesStart.x;
13858      touchY = image.touchesStart.y;
13859    }
13860
13861    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
13862    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
13863    if (e) {
13864      slideWidth = gesture.$slideEl[0].offsetWidth;
13865      slideHeight = gesture.$slideEl[0].offsetHeight;
13866      offsetX = gesture.$slideEl.offset().left;
13867      offsetY = gesture.$slideEl.offset().top;
13868      diffX = (offsetX + (slideWidth / 2)) - touchX;
13869      diffY = (offsetY + (slideHeight / 2)) - touchY;
13870
13871      imageWidth = gesture.$imageEl[0].offsetWidth;
13872      imageHeight = gesture.$imageEl[0].offsetHeight;
13873      scaledWidth = imageWidth * zoom.scale;
13874      scaledHeight = imageHeight * zoom.scale;
13875
13876      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
13877      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
13878      translateMaxX = -translateMinX;
13879      translateMaxY = -translateMinY;
13880
13881      translateX = diffX * zoom.scale;
13882      translateY = diffY * zoom.scale;
13883
13884      if (translateX < translateMinX) {
13885        translateX = translateMinX;
13886      }
13887      if (translateX > translateMaxX) {
13888        translateX = translateMaxX;
13889      }
13890
13891      if (translateY < translateMinY) {
13892        translateY = translateMinY;
13893      }
13894      if (translateY > translateMaxY) {
13895        translateY = translateMaxY;
13896      }
13897    } else {
13898      translateX = 0;
13899      translateY = 0;
13900    }
13901    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
13902    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
13903  },
13904  out() {
13905    const swiper = this;
13906
13907    const zoom = swiper.zoom;
13908    const params = swiper.params.zoom;
13909    const { gesture } = zoom;
13910
13911    if (!gesture.$slideEl) {
13912      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
13913        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
13914      } else {
13915        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
13916      }
13917      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
13918      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
13919    }
13920    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
13921
13922    zoom.scale = 1;
13923    zoom.currentScale = 1;
13924    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
13925    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
13926    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
13927    gesture.$slideEl = undefined;
13928  },
13929  // Attach/Detach Events
13930  enable() {
13931    const swiper = this;
13932    const zoom = swiper.zoom;
13933    if (zoom.enabled) return;
13934    zoom.enabled = true;
13935
13936    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
13937    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
13938
13939    const slideSelector = `.${swiper.params.slideClass}`;
13940
13941    // Scale image
13942    if (Support.gestures) {
13943      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
13944      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
13945      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
13946    } else if (swiper.touchEvents.start === 'touchstart') {
13947      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
13948      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
13949      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
13950      if (swiper.touchEvents.cancel) {
13951        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
13952      }
13953    }
13954
13955    // Move image
13956    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
13957  },
13958  disable() {
13959    const swiper = this;
13960    const zoom = swiper.zoom;
13961    if (!zoom.enabled) return;
13962
13963    swiper.zoom.enabled = false;
13964
13965    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
13966    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;
13967
13968    const slideSelector = `.${swiper.params.slideClass}`;
13969
13970    // Scale image
13971    if (Support.gestures) {
13972      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);
13973      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);
13974      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);
13975    } else if (swiper.touchEvents.start === 'touchstart') {
13976      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
13977      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
13978      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
13979      if (swiper.touchEvents.cancel) {
13980        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
13981      }
13982    }
13983
13984    // Move image
13985    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);
13986  },
13987};
13988
13989var Zoom$1 = {
13990  name: 'zoom',
13991  params: {
13992    zoom: {
13993      enabled: false,
13994      maxRatio: 3,
13995      minRatio: 1,
13996      toggle: true,
13997      containerClass: 'swiper-zoom-container',
13998      zoomedSlideClass: 'swiper-slide-zoomed',
13999    },
14000  },
14001  create() {
14002    const swiper = this;
14003    const zoom = {
14004      enabled: false,
14005      scale: 1,
14006      currentScale: 1,
14007      isScaling: false,
14008      gesture: {
14009        $slideEl: undefined,
14010        slideWidth: undefined,
14011        slideHeight: undefined,
14012        $imageEl: undefined,
14013        $imageWrapEl: undefined,
14014        maxRatio: 3,
14015      },
14016      image: {
14017        isTouched: undefined,
14018        isMoved: undefined,
14019        currentX: undefined,
14020        currentY: undefined,
14021        minX: undefined,
14022        minY: undefined,
14023        maxX: undefined,
14024        maxY: undefined,
14025        width: undefined,
14026        height: undefined,
14027        startX: undefined,
14028        startY: undefined,
14029        touchesStart: {},
14030        touchesCurrent: {},
14031      },
14032      velocity: {
14033        x: undefined,
14034        y: undefined,
14035        prevPositionX: undefined,
14036        prevPositionY: undefined,
14037        prevTime: undefined,
14038      },
14039    };
14040
14041    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {
14042      zoom[methodName] = Zoom[methodName].bind(swiper);
14043    });
14044    Utils.extend(swiper, {
14045      zoom,
14046    });
14047
14048    let scale = 1;
14049    Object.defineProperty(swiper.zoom, 'scale', {
14050      get() {
14051        return scale;
14052      },
14053      set(value) {
14054        if (scale !== value) {
14055          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
14056          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
14057          swiper.emit('zoomChange', value, imageEl, slideEl);
14058        }
14059        scale = value;
14060      },
14061    });
14062  },
14063  on: {
14064    init() {
14065      const swiper = this;
14066      if (swiper.params.zoom.enabled) {
14067        swiper.zoom.enable();
14068      }
14069    },
14070    destroy() {
14071      const swiper = this;
14072      swiper.zoom.disable();
14073    },
14074    touchStart(e) {
14075      const swiper = this;
14076      if (!swiper.zoom.enabled) return;
14077      swiper.zoom.onTouchStart(e);
14078    },
14079    touchEnd(e) {
14080      const swiper = this;
14081      if (!swiper.zoom.enabled) return;
14082      swiper.zoom.onTouchEnd(e);
14083    },
14084    doubleTap(e) {
14085      const swiper = this;
14086      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
14087        swiper.zoom.toggle(e);
14088      }
14089    },
14090    transitionEnd() {
14091      const swiper = this;
14092      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
14093        swiper.zoom.onTransitionEnd();
14094      }
14095    },
14096    slideChange() {
14097      const swiper = this;
14098      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
14099        swiper.zoom.onTransitionEnd();
14100      }
14101    },
14102  },
14103};
14104
14105const Lazy = {
14106  loadInSlide(index, loadInDuplicate = true) {
14107    const swiper = this;
14108    const params = swiper.params.lazy;
14109    if (typeof index === 'undefined') return;
14110    if (swiper.slides.length === 0) return;
14111    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
14112
14113    const $slideEl = isVirtual
14114      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`)
14115      : swiper.slides.eq(index);
14116
14117    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
14118    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
14119      $images = $images.add($slideEl[0]);
14120    }
14121    if ($images.length === 0) return;
14122
14123    $images.each((imageIndex, imageEl) => {
14124      const $imageEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(imageEl);
14125      $imageEl.addClass(params.loadingClass);
14126
14127      const background = $imageEl.attr('data-background');
14128      const src = $imageEl.attr('data-src');
14129      const srcset = $imageEl.attr('data-srcset');
14130      const sizes = $imageEl.attr('data-sizes');
14131      const $pictureEl = $imageEl.parent('picture');
14132
14133      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {
14134        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;
14135        if (background) {
14136          $imageEl.css('background-image', `url("${background}")`);
14137          $imageEl.removeAttr('data-background');
14138        } else {
14139          if (srcset) {
14140            $imageEl.attr('srcset', srcset);
14141            $imageEl.removeAttr('data-srcset');
14142          }
14143          if (sizes) {
14144            $imageEl.attr('sizes', sizes);
14145            $imageEl.removeAttr('data-sizes');
14146          }
14147          if ($pictureEl.length) {
14148            $pictureEl.children('source').each((sourceIndex, sourceEl) => {
14149              const $source = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(sourceEl);
14150
14151              if ($source.attr('data-srcset')) {
14152                $source.attr('srcset', $source.attr('data-srcset'));
14153                $source.removeAttr('data-srcset');
14154              }
14155            });
14156          }
14157          if (src) {
14158            $imageEl.attr('src', src);
14159            $imageEl.removeAttr('data-src');
14160          }
14161        }
14162
14163        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
14164        $slideEl.find(`.${params.preloaderClass}`).remove();
14165        if (swiper.params.loop && loadInDuplicate) {
14166          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
14167          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
14168            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
14169            swiper.lazy.loadInSlide(originalSlide.index(), false);
14170          } else {
14171            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
14172            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
14173          }
14174        }
14175        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
14176        if (swiper.params.autoHeight) {
14177          swiper.updateAutoHeight();
14178        }
14179      });
14180
14181      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
14182    });
14183  },
14184  load() {
14185    const swiper = this;
14186    const {
14187      $wrapperEl, params: swiperParams, slides, activeIndex,
14188    } = swiper;
14189    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
14190    const params = swiperParams.lazy;
14191
14192    let slidesPerView = swiperParams.slidesPerView;
14193    if (slidesPerView === 'auto') {
14194      slidesPerView = 0;
14195    }
14196
14197    function slideExist(index) {
14198      if (isVirtual) {
14199        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
14200          return true;
14201        }
14202      } else if (slides[index]) return true;
14203      return false;
14204    }
14205
14206    function slideIndex(slideEl) {
14207      if (isVirtual) {
14208        return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).attr('data-swiper-slide-index');
14209      }
14210      return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).index();
14211    }
14212
14213    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
14214    if (swiper.params.watchSlidesVisibility) {
14215      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
14216        const index = isVirtual ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).attr('data-swiper-slide-index') : Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(slideEl).index();
14217        swiper.lazy.loadInSlide(index);
14218      });
14219    } else if (slidesPerView > 1) {
14220      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
14221        if (slideExist(i)) swiper.lazy.loadInSlide(i);
14222      }
14223    } else {
14224      swiper.lazy.loadInSlide(activeIndex);
14225    }
14226    if (params.loadPrevNext) {
14227      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
14228        const amount = params.loadPrevNextAmount;
14229        const spv = slidesPerView;
14230        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
14231        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
14232        // Next Slides
14233        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
14234          if (slideExist(i)) swiper.lazy.loadInSlide(i);
14235        }
14236        // Prev Slides
14237        for (let i = minIndex; i < activeIndex; i += 1) {
14238          if (slideExist(i)) swiper.lazy.loadInSlide(i);
14239        }
14240      } else {
14241        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
14242        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
14243
14244        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
14245        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
14246      }
14247    }
14248  },
14249};
14250
14251var Lazy$1 = {
14252  name: 'lazy',
14253  params: {
14254    lazy: {
14255      enabled: false,
14256      loadPrevNext: false,
14257      loadPrevNextAmount: 1,
14258      loadOnTransitionStart: false,
14259
14260      elementClass: 'swiper-lazy',
14261      loadingClass: 'swiper-lazy-loading',
14262      loadedClass: 'swiper-lazy-loaded',
14263      preloaderClass: 'swiper-lazy-preloader',
14264    },
14265  },
14266  create() {
14267    const swiper = this;
14268    Utils.extend(swiper, {
14269      lazy: {
14270        initialImageLoaded: false,
14271        load: Lazy.load.bind(swiper),
14272        loadInSlide: Lazy.loadInSlide.bind(swiper),
14273      },
14274    });
14275  },
14276  on: {
14277    beforeInit() {
14278      const swiper = this;
14279      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
14280        swiper.params.preloadImages = false;
14281      }
14282    },
14283    init() {
14284      const swiper = this;
14285      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
14286        swiper.lazy.load();
14287      }
14288    },
14289    scroll() {
14290      const swiper = this;
14291      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
14292        swiper.lazy.load();
14293      }
14294    },
14295    resize() {
14296      const swiper = this;
14297      if (swiper.params.lazy.enabled) {
14298        swiper.lazy.load();
14299      }
14300    },
14301    scrollbarDragMove() {
14302      const swiper = this;
14303      if (swiper.params.lazy.enabled) {
14304        swiper.lazy.load();
14305      }
14306    },
14307    transitionStart() {
14308      const swiper = this;
14309      if (swiper.params.lazy.enabled) {
14310        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
14311          swiper.lazy.load();
14312        }
14313      }
14314    },
14315    transitionEnd() {
14316      const swiper = this;
14317      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
14318        swiper.lazy.load();
14319      }
14320    },
14321    slideChange() {
14322      const swiper = this;
14323      if (swiper.params.lazy.enabled && swiper.params.cssMode) {
14324        swiper.lazy.load();
14325      }
14326    },
14327  },
14328};
14329
14330/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
14331
14332const Controller = {
14333  LinearSpline: function LinearSpline(x, y) {
14334    const binarySearch = (function search() {
14335      let maxIndex;
14336      let minIndex;
14337      let guess;
14338      return (array, val) => {
14339        minIndex = -1;
14340        maxIndex = array.length;
14341        while (maxIndex - minIndex > 1) {
14342          guess = maxIndex + minIndex >> 1;
14343          if (array[guess] <= val) {
14344            minIndex = guess;
14345          } else {
14346            maxIndex = guess;
14347          }
14348        }
14349        return maxIndex;
14350      };
14351    }());
14352    this.x = x;
14353    this.y = y;
14354    this.lastIndex = x.length - 1;
14355    // Given an x value (x2), return the expected y2 value:
14356    // (x1,y1) is the known point before given value,
14357    // (x3,y3) is the known point after given value.
14358    let i1;
14359    let i3;
14360
14361    this.interpolate = function interpolate(x2) {
14362      if (!x2) return 0;
14363
14364      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
14365      i3 = binarySearch(this.x, x2);
14366      i1 = i3 - 1;
14367
14368      // We have our indexes i1 & i3, so we can calculate already:
14369      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
14370      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
14371    };
14372    return this;
14373  },
14374  // xxx: for now i will just save one spline function to to
14375  getInterpolateFunction(c) {
14376    const swiper = this;
14377    if (!swiper.controller.spline) {
14378      swiper.controller.spline = swiper.params.loop
14379        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
14380        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
14381    }
14382  },
14383  setTranslate(setTranslate, byController) {
14384    const swiper = this;
14385    const controlled = swiper.controller.control;
14386    let multiplier;
14387    let controlledTranslate;
14388    function setControlledTranslate(c) {
14389      // this will create an Interpolate function based on the snapGrids
14390      // x is the Grid of the scrolled scroller and y will be the controlled scroller
14391      // it makes sense to create this only once and recall it for the interpolation
14392      // the function does a lot of value caching for performance
14393      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
14394      if (swiper.params.controller.by === 'slide') {
14395        swiper.controller.getInterpolateFunction(c);
14396        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
14397        // but it did not work out
14398        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
14399      }
14400
14401      if (!controlledTranslate || swiper.params.controller.by === 'container') {
14402        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
14403        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
14404      }
14405
14406      if (swiper.params.controller.inverse) {
14407        controlledTranslate = c.maxTranslate() - controlledTranslate;
14408      }
14409      c.updateProgress(controlledTranslate);
14410      c.setTranslate(controlledTranslate, swiper);
14411      c.updateActiveIndex();
14412      c.updateSlidesClasses();
14413    }
14414    if (Array.isArray(controlled)) {
14415      for (let i = 0; i < controlled.length; i += 1) {
14416        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
14417          setControlledTranslate(controlled[i]);
14418        }
14419      }
14420    } else if (controlled instanceof Swiper && byController !== controlled) {
14421      setControlledTranslate(controlled);
14422    }
14423  },
14424  setTransition(duration, byController) {
14425    const swiper = this;
14426    const controlled = swiper.controller.control;
14427    let i;
14428    function setControlledTransition(c) {
14429      c.setTransition(duration, swiper);
14430      if (duration !== 0) {
14431        c.transitionStart();
14432        if (c.params.autoHeight) {
14433          Utils.nextTick(() => {
14434            c.updateAutoHeight();
14435          });
14436        }
14437        c.$wrapperEl.transitionEnd(() => {
14438          if (!controlled) return;
14439          if (c.params.loop && swiper.params.controller.by === 'slide') {
14440            c.loopFix();
14441          }
14442          c.transitionEnd();
14443        });
14444      }
14445    }
14446    if (Array.isArray(controlled)) {
14447      for (i = 0; i < controlled.length; i += 1) {
14448        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
14449          setControlledTransition(controlled[i]);
14450        }
14451      }
14452    } else if (controlled instanceof Swiper && byController !== controlled) {
14453      setControlledTransition(controlled);
14454    }
14455  },
14456};
14457var Controller$1 = {
14458  name: 'controller',
14459  params: {
14460    controller: {
14461      control: undefined,
14462      inverse: false,
14463      by: 'slide', // or 'container'
14464    },
14465  },
14466  create() {
14467    const swiper = this;
14468    Utils.extend(swiper, {
14469      controller: {
14470        control: swiper.params.controller.control,
14471        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
14472        setTranslate: Controller.setTranslate.bind(swiper),
14473        setTransition: Controller.setTransition.bind(swiper),
14474      },
14475    });
14476  },
14477  on: {
14478    update() {
14479      const swiper = this;
14480      if (!swiper.controller.control) return;
14481      if (swiper.controller.spline) {
14482        swiper.controller.spline = undefined;
14483        delete swiper.controller.spline;
14484      }
14485    },
14486    resize() {
14487      const swiper = this;
14488      if (!swiper.controller.control) return;
14489      if (swiper.controller.spline) {
14490        swiper.controller.spline = undefined;
14491        delete swiper.controller.spline;
14492      }
14493    },
14494    observerUpdate() {
14495      const swiper = this;
14496      if (!swiper.controller.control) return;
14497      if (swiper.controller.spline) {
14498        swiper.controller.spline = undefined;
14499        delete swiper.controller.spline;
14500      }
14501    },
14502    setTranslate(translate, byController) {
14503      const swiper = this;
14504      if (!swiper.controller.control) return;
14505      swiper.controller.setTranslate(translate, byController);
14506    },
14507    setTransition(duration, byController) {
14508      const swiper = this;
14509      if (!swiper.controller.control) return;
14510      swiper.controller.setTransition(duration, byController);
14511    },
14512  },
14513};
14514
14515const a11y = {
14516  makeElFocusable($el) {
14517    $el.attr('tabIndex', '0');
14518    return $el;
14519  },
14520  makeElNotFocusable($el) {
14521    $el.attr('tabIndex', '-1');
14522    return $el;
14523  },
14524  addElRole($el, role) {
14525    $el.attr('role', role);
14526    return $el;
14527  },
14528  addElLabel($el, label) {
14529    $el.attr('aria-label', label);
14530    return $el;
14531  },
14532  disableEl($el) {
14533    $el.attr('aria-disabled', true);
14534    return $el;
14535  },
14536  enableEl($el) {
14537    $el.attr('aria-disabled', false);
14538    return $el;
14539  },
14540  onEnterKey(e) {
14541    const swiper = this;
14542    const params = swiper.params.a11y;
14543    if (e.keyCode !== 13) return;
14544    const $targetEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(e.target);
14545    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
14546      if (!(swiper.isEnd && !swiper.params.loop)) {
14547        swiper.slideNext();
14548      }
14549      if (swiper.isEnd) {
14550        swiper.a11y.notify(params.lastSlideMessage);
14551      } else {
14552        swiper.a11y.notify(params.nextSlideMessage);
14553      }
14554    }
14555    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
14556      if (!(swiper.isBeginning && !swiper.params.loop)) {
14557        swiper.slidePrev();
14558      }
14559      if (swiper.isBeginning) {
14560        swiper.a11y.notify(params.firstSlideMessage);
14561      } else {
14562        swiper.a11y.notify(params.prevSlideMessage);
14563      }
14564    }
14565    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {
14566      $targetEl[0].click();
14567    }
14568  },
14569  notify(message) {
14570    const swiper = this;
14571    const notification = swiper.a11y.liveRegion;
14572    if (notification.length === 0) return;
14573    notification.html('');
14574    notification.html(message);
14575  },
14576  updateNavigation() {
14577    const swiper = this;
14578
14579    if (swiper.params.loop || !swiper.navigation) return;
14580    const { $nextEl, $prevEl } = swiper.navigation;
14581
14582    if ($prevEl && $prevEl.length > 0) {
14583      if (swiper.isBeginning) {
14584        swiper.a11y.disableEl($prevEl);
14585        swiper.a11y.makeElNotFocusable($prevEl);
14586      } else {
14587        swiper.a11y.enableEl($prevEl);
14588        swiper.a11y.makeElFocusable($prevEl);
14589      }
14590    }
14591    if ($nextEl && $nextEl.length > 0) {
14592      if (swiper.isEnd) {
14593        swiper.a11y.disableEl($nextEl);
14594        swiper.a11y.makeElNotFocusable($nextEl);
14595      } else {
14596        swiper.a11y.enableEl($nextEl);
14597        swiper.a11y.makeElFocusable($nextEl);
14598      }
14599    }
14600  },
14601  updatePagination() {
14602    const swiper = this;
14603    const params = swiper.params.a11y;
14604    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
14605      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {
14606        const $bulletEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(bulletEl);
14607        swiper.a11y.makeElFocusable($bulletEl);
14608        swiper.a11y.addElRole($bulletEl, 'button');
14609        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
14610      });
14611    }
14612  },
14613  init() {
14614    const swiper = this;
14615
14616    swiper.$el.append(swiper.a11y.liveRegion);
14617
14618    // Navigation
14619    const params = swiper.params.a11y;
14620    let $nextEl;
14621    let $prevEl;
14622    if (swiper.navigation && swiper.navigation.$nextEl) {
14623      $nextEl = swiper.navigation.$nextEl;
14624    }
14625    if (swiper.navigation && swiper.navigation.$prevEl) {
14626      $prevEl = swiper.navigation.$prevEl;
14627    }
14628    if ($nextEl) {
14629      swiper.a11y.makeElFocusable($nextEl);
14630      swiper.a11y.addElRole($nextEl, 'button');
14631      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
14632      $nextEl.on('keydown', swiper.a11y.onEnterKey);
14633    }
14634    if ($prevEl) {
14635      swiper.a11y.makeElFocusable($prevEl);
14636      swiper.a11y.addElRole($prevEl, 'button');
14637      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
14638      $prevEl.on('keydown', swiper.a11y.onEnterKey);
14639    }
14640
14641    // Pagination
14642    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
14643      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
14644    }
14645  },
14646  destroy() {
14647    const swiper = this;
14648    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
14649
14650    let $nextEl;
14651    let $prevEl;
14652    if (swiper.navigation && swiper.navigation.$nextEl) {
14653      $nextEl = swiper.navigation.$nextEl;
14654    }
14655    if (swiper.navigation && swiper.navigation.$prevEl) {
14656      $prevEl = swiper.navigation.$prevEl;
14657    }
14658    if ($nextEl) {
14659      $nextEl.off('keydown', swiper.a11y.onEnterKey);
14660    }
14661    if ($prevEl) {
14662      $prevEl.off('keydown', swiper.a11y.onEnterKey);
14663    }
14664
14665    // Pagination
14666    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
14667      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);
14668    }
14669  },
14670};
14671var A11y = {
14672  name: 'a11y',
14673  params: {
14674    a11y: {
14675      enabled: true,
14676      notificationClass: 'swiper-notification',
14677      prevSlideMessage: 'Previous slide',
14678      nextSlideMessage: 'Next slide',
14679      firstSlideMessage: 'This is the first slide',
14680      lastSlideMessage: 'This is the last slide',
14681      paginationBulletMessage: 'Go to slide {{index}}',
14682    },
14683  },
14684  create() {
14685    const swiper = this;
14686    Utils.extend(swiper, {
14687      a11y: {
14688        liveRegion: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`),
14689      },
14690    });
14691    Object.keys(a11y).forEach((methodName) => {
14692      swiper.a11y[methodName] = a11y[methodName].bind(swiper);
14693    });
14694  },
14695  on: {
14696    init() {
14697      const swiper = this;
14698      if (!swiper.params.a11y.enabled) return;
14699      swiper.a11y.init();
14700      swiper.a11y.updateNavigation();
14701    },
14702    toEdge() {
14703      const swiper = this;
14704      if (!swiper.params.a11y.enabled) return;
14705      swiper.a11y.updateNavigation();
14706    },
14707    fromEdge() {
14708      const swiper = this;
14709      if (!swiper.params.a11y.enabled) return;
14710      swiper.a11y.updateNavigation();
14711    },
14712    paginationUpdate() {
14713      const swiper = this;
14714      if (!swiper.params.a11y.enabled) return;
14715      swiper.a11y.updatePagination();
14716    },
14717    destroy() {
14718      const swiper = this;
14719      if (!swiper.params.a11y.enabled) return;
14720      swiper.a11y.destroy();
14721    },
14722  },
14723};
14724
14725const History = {
14726  init() {
14727    const swiper = this;
14728    if (!swiper.params.history) return;
14729    if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history || !ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.pushState) {
14730      swiper.params.history.enabled = false;
14731      swiper.params.hashNavigation.enabled = true;
14732      return;
14733    }
14734    const history = swiper.history;
14735    history.initialized = true;
14736    history.paths = History.getPathValues();
14737    if (!history.paths.key && !history.paths.value) return;
14738    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
14739    if (!swiper.params.history.replaceState) {
14740      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].addEventListener('popstate', swiper.history.setHistoryPopState);
14741    }
14742  },
14743  destroy() {
14744    const swiper = this;
14745    if (!swiper.params.history.replaceState) {
14746      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].removeEventListener('popstate', swiper.history.setHistoryPopState);
14747    }
14748  },
14749  setHistoryPopState() {
14750    const swiper = this;
14751    swiper.history.paths = History.getPathValues();
14752    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
14753  },
14754  getPathValues() {
14755    const pathArray = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.pathname.slice(1).split('/').filter((part) => part !== '');
14756    const total = pathArray.length;
14757    const key = pathArray[total - 2];
14758    const value = pathArray[total - 1];
14759    return { key, value };
14760  },
14761  setHistory(key, index) {
14762    const swiper = this;
14763    if (!swiper.history.initialized || !swiper.params.history.enabled) return;
14764    const slide = swiper.slides.eq(index);
14765    let value = History.slugify(slide.attr('data-history'));
14766    if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].location.pathname.includes(key)) {
14767      value = `${key}/${value}`;
14768    }
14769    const currentState = ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.state;
14770    if (currentState && currentState.value === value) {
14771      return;
14772    }
14773    if (swiper.params.history.replaceState) {
14774      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState({ value }, null, value);
14775    } else {
14776      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.pushState({ value }, null, value);
14777    }
14778  },
14779  slugify(text) {
14780    return text.toString()
14781      .replace(/\s+/g, '-')
14782      .replace(/[^\w-]+/g, '')
14783      .replace(/--+/g, '-')
14784      .replace(/^-+/, '')
14785      .replace(/-+$/, '');
14786  },
14787  scrollToSlide(speed, value, runCallbacks) {
14788    const swiper = this;
14789    if (value) {
14790      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
14791        const slide = swiper.slides.eq(i);
14792        const slideHistory = History.slugify(slide.attr('data-history'));
14793        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
14794          const index = slide.index();
14795          swiper.slideTo(index, speed, runCallbacks);
14796        }
14797      }
14798    } else {
14799      swiper.slideTo(0, speed, runCallbacks);
14800    }
14801  },
14802};
14803
14804var History$1 = {
14805  name: 'history',
14806  params: {
14807    history: {
14808      enabled: false,
14809      replaceState: false,
14810      key: 'slides',
14811    },
14812  },
14813  create() {
14814    const swiper = this;
14815    Utils.extend(swiper, {
14816      history: {
14817        init: History.init.bind(swiper),
14818        setHistory: History.setHistory.bind(swiper),
14819        setHistoryPopState: History.setHistoryPopState.bind(swiper),
14820        scrollToSlide: History.scrollToSlide.bind(swiper),
14821        destroy: History.destroy.bind(swiper),
14822      },
14823    });
14824  },
14825  on: {
14826    init() {
14827      const swiper = this;
14828      if (swiper.params.history.enabled) {
14829        swiper.history.init();
14830      }
14831    },
14832    destroy() {
14833      const swiper = this;
14834      if (swiper.params.history.enabled) {
14835        swiper.history.destroy();
14836      }
14837    },
14838    transitionEnd() {
14839      const swiper = this;
14840      if (swiper.history.initialized) {
14841        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
14842      }
14843    },
14844    slideChange() {
14845      const swiper = this;
14846      if (swiper.history.initialized && swiper.params.cssMode) {
14847        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
14848      }
14849    },
14850  },
14851};
14852
14853const HashNavigation = {
14854  onHashCange() {
14855    const swiper = this;
14856    swiper.emit('hashChange');
14857    const newHash = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash.replace('#', '');
14858    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
14859    if (newHash !== activeSlideHash) {
14860      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
14861      if (typeof newIndex === 'undefined') return;
14862      swiper.slideTo(newIndex);
14863    }
14864  },
14865  setHash() {
14866    const swiper = this;
14867    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
14868    if (swiper.params.hashNavigation.replaceState && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history && ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState) {
14869      ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"].history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));
14870      swiper.emit('hashSet');
14871    } else {
14872      const slide = swiper.slides.eq(swiper.activeIndex);
14873      const hash = slide.attr('data-hash') || slide.attr('data-history');
14874      ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash = hash || '';
14875      swiper.emit('hashSet');
14876    }
14877  },
14878  init() {
14879    const swiper = this;
14880    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;
14881    swiper.hashNavigation.initialized = true;
14882    const hash = ssr_window__WEBPACK_IMPORTED_MODULE_1__["document"].location.hash.replace('#', '');
14883    if (hash) {
14884      const speed = 0;
14885      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
14886        const slide = swiper.slides.eq(i);
14887        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
14888        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
14889          const index = slide.index();
14890          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
14891        }
14892      }
14893    }
14894    if (swiper.params.hashNavigation.watchState) {
14895      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]).on('hashchange', swiper.hashNavigation.onHashCange);
14896    }
14897  },
14898  destroy() {
14899    const swiper = this;
14900    if (swiper.params.hashNavigation.watchState) {
14901      Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__["window"]).off('hashchange', swiper.hashNavigation.onHashCange);
14902    }
14903  },
14904};
14905var HashNavigation$1 = {
14906  name: 'hash-navigation',
14907  params: {
14908    hashNavigation: {
14909      enabled: false,
14910      replaceState: false,
14911      watchState: false,
14912    },
14913  },
14914  create() {
14915    const swiper = this;
14916    Utils.extend(swiper, {
14917      hashNavigation: {
14918        initialized: false,
14919        init: HashNavigation.init.bind(swiper),
14920        destroy: HashNavigation.destroy.bind(swiper),
14921        setHash: HashNavigation.setHash.bind(swiper),
14922        onHashCange: HashNavigation.onHashCange.bind(swiper),
14923      },
14924    });
14925  },
14926  on: {
14927    init() {
14928      const swiper = this;
14929      if (swiper.params.hashNavigation.enabled) {
14930        swiper.hashNavigation.init();
14931      }
14932    },
14933    destroy() {
14934      const swiper = this;
14935      if (swiper.params.hashNavigation.enabled) {
14936        swiper.hashNavigation.destroy();
14937      }
14938    },
14939    transitionEnd() {
14940      const swiper = this;
14941      if (swiper.hashNavigation.initialized) {
14942        swiper.hashNavigation.setHash();
14943      }
14944    },
14945    slideChange() {
14946      const swiper = this;
14947      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
14948        swiper.hashNavigation.setHash();
14949      }
14950    },
14951  },
14952};
14953
14954/* eslint no-underscore-dangle: "off" */
14955
14956const Autoplay = {
14957  run() {
14958    const swiper = this;
14959    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
14960    let delay = swiper.params.autoplay.delay;
14961    if ($activeSlideEl.attr('data-swiper-autoplay')) {
14962      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
14963    }
14964    clearTimeout(swiper.autoplay.timeout);
14965    swiper.autoplay.timeout = Utils.nextTick(() => {
14966      if (swiper.params.autoplay.reverseDirection) {
14967        if (swiper.params.loop) {
14968          swiper.loopFix();
14969          swiper.slidePrev(swiper.params.speed, true, true);
14970          swiper.emit('autoplay');
14971        } else if (!swiper.isBeginning) {
14972          swiper.slidePrev(swiper.params.speed, true, true);
14973          swiper.emit('autoplay');
14974        } else if (!swiper.params.autoplay.stopOnLastSlide) {
14975          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
14976          swiper.emit('autoplay');
14977        } else {
14978          swiper.autoplay.stop();
14979        }
14980      } else if (swiper.params.loop) {
14981        swiper.loopFix();
14982        swiper.slideNext(swiper.params.speed, true, true);
14983        swiper.emit('autoplay');
14984      } else if (!swiper.isEnd) {
14985        swiper.slideNext(swiper.params.speed, true, true);
14986        swiper.emit('autoplay');
14987      } else if (!swiper.params.autoplay.stopOnLastSlide) {
14988        swiper.slideTo(0, swiper.params.speed, true, true);
14989        swiper.emit('autoplay');
14990      } else {
14991        swiper.autoplay.stop();
14992      }
14993      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
14994    }, delay);
14995  },
14996  start() {
14997    const swiper = this;
14998    if (typeof swiper.autoplay.timeout !== 'undefined') return false;
14999    if (swiper.autoplay.running) return false;
15000    swiper.autoplay.running = true;
15001    swiper.emit('autoplayStart');
15002    swiper.autoplay.run();
15003    return true;
15004  },
15005  stop() {
15006    const swiper = this;
15007    if (!swiper.autoplay.running) return false;
15008    if (typeof swiper.autoplay.timeout === 'undefined') return false;
15009
15010    if (swiper.autoplay.timeout) {
15011      clearTimeout(swiper.autoplay.timeout);
15012      swiper.autoplay.timeout = undefined;
15013    }
15014    swiper.autoplay.running = false;
15015    swiper.emit('autoplayStop');
15016    return true;
15017  },
15018  pause(speed) {
15019    const swiper = this;
15020    if (!swiper.autoplay.running) return;
15021    if (swiper.autoplay.paused) return;
15022    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
15023    swiper.autoplay.paused = true;
15024    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
15025      swiper.autoplay.paused = false;
15026      swiper.autoplay.run();
15027    } else {
15028      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
15029      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
15030    }
15031  },
15032};
15033
15034var Autoplay$1 = {
15035  name: 'autoplay',
15036  params: {
15037    autoplay: {
15038      enabled: false,
15039      delay: 3000,
15040      waitForTransition: true,
15041      disableOnInteraction: true,
15042      stopOnLastSlide: false,
15043      reverseDirection: false,
15044    },
15045  },
15046  create() {
15047    const swiper = this;
15048    Utils.extend(swiper, {
15049      autoplay: {
15050        running: false,
15051        paused: false,
15052        run: Autoplay.run.bind(swiper),
15053        start: Autoplay.start.bind(swiper),
15054        stop: Autoplay.stop.bind(swiper),
15055        pause: Autoplay.pause.bind(swiper),
15056        onVisibilityChange() {
15057          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
15058            swiper.autoplay.pause();
15059          }
15060          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
15061            swiper.autoplay.run();
15062            swiper.autoplay.paused = false;
15063          }
15064        },
15065        onTransitionEnd(e) {
15066          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
15067          if (e.target !== this) return;
15068          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
15069          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
15070          swiper.autoplay.paused = false;
15071          if (!swiper.autoplay.running) {
15072            swiper.autoplay.stop();
15073          } else {
15074            swiper.autoplay.run();
15075          }
15076        },
15077      },
15078    });
15079  },
15080  on: {
15081    init() {
15082      const swiper = this;
15083      if (swiper.params.autoplay.enabled) {
15084        swiper.autoplay.start();
15085        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
15086      }
15087    },
15088    beforeTransitionStart(speed, internal) {
15089      const swiper = this;
15090      if (swiper.autoplay.running) {
15091        if (internal || !swiper.params.autoplay.disableOnInteraction) {
15092          swiper.autoplay.pause(speed);
15093        } else {
15094          swiper.autoplay.stop();
15095        }
15096      }
15097    },
15098    sliderFirstMove() {
15099      const swiper = this;
15100      if (swiper.autoplay.running) {
15101        if (swiper.params.autoplay.disableOnInteraction) {
15102          swiper.autoplay.stop();
15103        } else {
15104          swiper.autoplay.pause();
15105        }
15106      }
15107    },
15108    touchEnd() {
15109      const swiper = this;
15110      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
15111        swiper.autoplay.run();
15112      }
15113    },
15114    destroy() {
15115      const swiper = this;
15116      if (swiper.autoplay.running) {
15117        swiper.autoplay.stop();
15118      }
15119      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
15120    },
15121  },
15122};
15123
15124const Fade = {
15125  setTranslate() {
15126    const swiper = this;
15127    const { slides } = swiper;
15128    for (let i = 0; i < slides.length; i += 1) {
15129      const $slideEl = swiper.slides.eq(i);
15130      const offset = $slideEl[0].swiperSlideOffset;
15131      let tx = -offset;
15132      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
15133      let ty = 0;
15134      if (!swiper.isHorizontal()) {
15135        ty = tx;
15136        tx = 0;
15137      }
15138      const slideOpacity = swiper.params.fadeEffect.crossFade
15139        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
15140        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
15141      $slideEl
15142        .css({
15143          opacity: slideOpacity,
15144        })
15145        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);
15146    }
15147  },
15148  setTransition(duration) {
15149    const swiper = this;
15150    const { slides, $wrapperEl } = swiper;
15151    slides.transition(duration);
15152    if (swiper.params.virtualTranslate && duration !== 0) {
15153      let eventTriggered = false;
15154      slides.transitionEnd(() => {
15155        if (eventTriggered) return;
15156        if (!swiper || swiper.destroyed) return;
15157        eventTriggered = true;
15158        swiper.animating = false;
15159        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
15160        for (let i = 0; i < triggerEvents.length; i += 1) {
15161          $wrapperEl.trigger(triggerEvents[i]);
15162        }
15163      });
15164    }
15165  },
15166};
15167
15168var EffectFade = {
15169  name: 'effect-fade',
15170  params: {
15171    fadeEffect: {
15172      crossFade: false,
15173    },
15174  },
15175  create() {
15176    const swiper = this;
15177    Utils.extend(swiper, {
15178      fadeEffect: {
15179        setTranslate: Fade.setTranslate.bind(swiper),
15180        setTransition: Fade.setTransition.bind(swiper),
15181      },
15182    });
15183  },
15184  on: {
15185    beforeInit() {
15186      const swiper = this;
15187      if (swiper.params.effect !== 'fade') return;
15188      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);
15189      const overwriteParams = {
15190        slidesPerView: 1,
15191        slidesPerColumn: 1,
15192        slidesPerGroup: 1,
15193        watchSlidesProgress: true,
15194        spaceBetween: 0,
15195        virtualTranslate: true,
15196      };
15197      Utils.extend(swiper.params, overwriteParams);
15198      Utils.extend(swiper.originalParams, overwriteParams);
15199    },
15200    setTranslate() {
15201      const swiper = this;
15202      if (swiper.params.effect !== 'fade') return;
15203      swiper.fadeEffect.setTranslate();
15204    },
15205    setTransition(duration) {
15206      const swiper = this;
15207      if (swiper.params.effect !== 'fade') return;
15208      swiper.fadeEffect.setTransition(duration);
15209    },
15210  },
15211};
15212
15213const Cube = {
15214  setTranslate() {
15215    const swiper = this;
15216    const {
15217      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,
15218    } = swiper;
15219    const params = swiper.params.cubeEffect;
15220    const isHorizontal = swiper.isHorizontal();
15221    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
15222    let wrapperRotate = 0;
15223    let $cubeShadowEl;
15224    if (params.shadow) {
15225      if (isHorizontal) {
15226        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
15227        if ($cubeShadowEl.length === 0) {
15228          $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-cube-shadow"></div>');
15229          $wrapperEl.append($cubeShadowEl);
15230        }
15231        $cubeShadowEl.css({ height: `${swiperWidth}px` });
15232      } else {
15233        $cubeShadowEl = $el.find('.swiper-cube-shadow');
15234        if ($cubeShadowEl.length === 0) {
15235          $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])('<div class="swiper-cube-shadow"></div>');
15236          $el.append($cubeShadowEl);
15237        }
15238      }
15239    }
15240    for (let i = 0; i < slides.length; i += 1) {
15241      const $slideEl = slides.eq(i);
15242      let slideIndex = i;
15243      if (isVirtual) {
15244        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
15245      }
15246      let slideAngle = slideIndex * 90;
15247      let round = Math.floor(slideAngle / 360);
15248      if (rtl) {
15249        slideAngle = -slideAngle;
15250        round = Math.floor(-slideAngle / 360);
15251      }
15252      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
15253      let tx = 0;
15254      let ty = 0;
15255      let tz = 0;
15256      if (slideIndex % 4 === 0) {
15257        tx = -round * 4 * swiperSize;
15258        tz = 0;
15259      } else if ((slideIndex - 1) % 4 === 0) {
15260        tx = 0;
15261        tz = -round * 4 * swiperSize;
15262      } else if ((slideIndex - 2) % 4 === 0) {
15263        tx = swiperSize + (round * 4 * swiperSize);
15264        tz = swiperSize;
15265      } else if ((slideIndex - 3) % 4 === 0) {
15266        tx = -swiperSize;
15267        tz = (3 * swiperSize) + (swiperSize * 4 * round);
15268      }
15269      if (rtl) {
15270        tx = -tx;
15271      }
15272
15273      if (!isHorizontal) {
15274        ty = tx;
15275        tx = 0;
15276      }
15277
15278      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
15279      if (progress <= 1 && progress > -1) {
15280        wrapperRotate = (slideIndex * 90) + (progress * 90);
15281        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);
15282      }
15283      $slideEl.transform(transform);
15284      if (params.slideShadows) {
15285        // Set shadows
15286        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
15287        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
15288        if (shadowBefore.length === 0) {
15289          shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
15290          $slideEl.append(shadowBefore);
15291        }
15292        if (shadowAfter.length === 0) {
15293          shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
15294          $slideEl.append(shadowAfter);
15295        }
15296        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
15297        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
15298      }
15299    }
15300    $wrapperEl.css({
15301      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
15302      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,
15303      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,
15304      'transform-origin': `50% 50% -${swiperSize / 2}px`,
15305    });
15306
15307    if (params.shadow) {
15308      if (isHorizontal) {
15309        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
15310      } else {
15311        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
15312        const multiplier = 1.5 - (
15313          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
15314          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
15315        );
15316        const scale1 = params.shadowScale;
15317        const scale2 = params.shadowScale / multiplier;
15318        const offset = params.shadowOffset;
15319        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
15320      }
15321    }
15322    const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;
15323    $wrapperEl
15324      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
15325  },
15326  setTransition(duration) {
15327    const swiper = this;
15328    const { $el, slides } = swiper;
15329    slides
15330      .transition(duration)
15331      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
15332      .transition(duration);
15333    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
15334      $el.find('.swiper-cube-shadow').transition(duration);
15335    }
15336  },
15337};
15338
15339var EffectCube = {
15340  name: 'effect-cube',
15341  params: {
15342    cubeEffect: {
15343      slideShadows: true,
15344      shadow: true,
15345      shadowOffset: 20,
15346      shadowScale: 0.94,
15347    },
15348  },
15349  create() {
15350    const swiper = this;
15351    Utils.extend(swiper, {
15352      cubeEffect: {
15353        setTranslate: Cube.setTranslate.bind(swiper),
15354        setTransition: Cube.setTransition.bind(swiper),
15355      },
15356    });
15357  },
15358  on: {
15359    beforeInit() {
15360      const swiper = this;
15361      if (swiper.params.effect !== 'cube') return;
15362      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);
15363      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
15364      const overwriteParams = {
15365        slidesPerView: 1,
15366        slidesPerColumn: 1,
15367        slidesPerGroup: 1,
15368        watchSlidesProgress: true,
15369        resistanceRatio: 0,
15370        spaceBetween: 0,
15371        centeredSlides: false,
15372        virtualTranslate: true,
15373      };
15374      Utils.extend(swiper.params, overwriteParams);
15375      Utils.extend(swiper.originalParams, overwriteParams);
15376    },
15377    setTranslate() {
15378      const swiper = this;
15379      if (swiper.params.effect !== 'cube') return;
15380      swiper.cubeEffect.setTranslate();
15381    },
15382    setTransition(duration) {
15383      const swiper = this;
15384      if (swiper.params.effect !== 'cube') return;
15385      swiper.cubeEffect.setTransition(duration);
15386    },
15387  },
15388};
15389
15390const Flip = {
15391  setTranslate() {
15392    const swiper = this;
15393    const { slides, rtlTranslate: rtl } = swiper;
15394    for (let i = 0; i < slides.length; i += 1) {
15395      const $slideEl = slides.eq(i);
15396      let progress = $slideEl[0].progress;
15397      if (swiper.params.flipEffect.limitRotation) {
15398        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
15399      }
15400      const offset = $slideEl[0].swiperSlideOffset;
15401      const rotate = -180 * progress;
15402      let rotateY = rotate;
15403      let rotateX = 0;
15404      let tx = -offset;
15405      let ty = 0;
15406      if (!swiper.isHorizontal()) {
15407        ty = tx;
15408        tx = 0;
15409        rotateX = -rotateY;
15410        rotateY = 0;
15411      } else if (rtl) {
15412        rotateY = -rotateY;
15413      }
15414
15415      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
15416
15417      if (swiper.params.flipEffect.slideShadows) {
15418        // Set shadows
15419        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
15420        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
15421        if (shadowBefore.length === 0) {
15422          shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}"></div>`);
15423          $slideEl.append(shadowBefore);
15424        }
15425        if (shadowAfter.length === 0) {
15426          shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}"></div>`);
15427          $slideEl.append(shadowAfter);
15428        }
15429        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
15430        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
15431      }
15432      $slideEl
15433        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
15434    }
15435  },
15436  setTransition(duration) {
15437    const swiper = this;
15438    const { slides, activeIndex, $wrapperEl } = swiper;
15439    slides
15440      .transition(duration)
15441      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
15442      .transition(duration);
15443    if (swiper.params.virtualTranslate && duration !== 0) {
15444      let eventTriggered = false;
15445      // eslint-disable-next-line
15446      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
15447        if (eventTriggered) return;
15448        if (!swiper || swiper.destroyed) return;
15449        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
15450        eventTriggered = true;
15451        swiper.animating = false;
15452        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
15453        for (let i = 0; i < triggerEvents.length; i += 1) {
15454          $wrapperEl.trigger(triggerEvents[i]);
15455        }
15456      });
15457    }
15458  },
15459};
15460
15461var EffectFlip = {
15462  name: 'effect-flip',
15463  params: {
15464    flipEffect: {
15465      slideShadows: true,
15466      limitRotation: true,
15467    },
15468  },
15469  create() {
15470    const swiper = this;
15471    Utils.extend(swiper, {
15472      flipEffect: {
15473        setTranslate: Flip.setTranslate.bind(swiper),
15474        setTransition: Flip.setTransition.bind(swiper),
15475      },
15476    });
15477  },
15478  on: {
15479    beforeInit() {
15480      const swiper = this;
15481      if (swiper.params.effect !== 'flip') return;
15482      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);
15483      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
15484      const overwriteParams = {
15485        slidesPerView: 1,
15486        slidesPerColumn: 1,
15487        slidesPerGroup: 1,
15488        watchSlidesProgress: true,
15489        spaceBetween: 0,
15490        virtualTranslate: true,
15491      };
15492      Utils.extend(swiper.params, overwriteParams);
15493      Utils.extend(swiper.originalParams, overwriteParams);
15494    },
15495    setTranslate() {
15496      const swiper = this;
15497      if (swiper.params.effect !== 'flip') return;
15498      swiper.flipEffect.setTranslate();
15499    },
15500    setTransition(duration) {
15501      const swiper = this;
15502      if (swiper.params.effect !== 'flip') return;
15503      swiper.flipEffect.setTransition(duration);
15504    },
15505  },
15506};
15507
15508const Coverflow = {
15509  setTranslate() {
15510    const swiper = this;
15511    const {
15512      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,
15513    } = swiper;
15514    const params = swiper.params.coverflowEffect;
15515    const isHorizontal = swiper.isHorizontal();
15516    const transform = swiper.translate;
15517    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
15518    const rotate = isHorizontal ? params.rotate : -params.rotate;
15519    const translate = params.depth;
15520    // Each slide offset from center
15521    for (let i = 0, length = slides.length; i < length; i += 1) {
15522      const $slideEl = slides.eq(i);
15523      const slideSize = slidesSizesGrid[i];
15524      const slideOffset = $slideEl[0].swiperSlideOffset;
15525      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
15526
15527      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
15528      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
15529      // var rotateZ = 0
15530      let translateZ = -translate * Math.abs(offsetMultiplier);
15531
15532      let stretch = params.stretch;
15533      // Allow percentage to make a relative stretch for responsive sliders
15534      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
15535        stretch = ((parseFloat(params.stretch) / 100) * slideSize);
15536      }
15537      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);
15538      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;
15539
15540      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
15541
15542      // Fix for ultra small values
15543      if (Math.abs(translateX) < 0.001) translateX = 0;
15544      if (Math.abs(translateY) < 0.001) translateY = 0;
15545      if (Math.abs(translateZ) < 0.001) translateZ = 0;
15546      if (Math.abs(rotateY) < 0.001) rotateY = 0;
15547      if (Math.abs(rotateX) < 0.001) rotateX = 0;
15548      if (Math.abs(scale) < 0.001) scale = 0;
15549
15550      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
15551
15552      $slideEl.transform(slideTransform);
15553      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
15554      if (params.slideShadows) {
15555        // Set shadows
15556        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
15557        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
15558        if ($shadowBeforeEl.length === 0) {
15559          $shadowBeforeEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
15560          $slideEl.append($shadowBeforeEl);
15561        }
15562        if ($shadowAfterEl.length === 0) {
15563          $shadowAfterEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
15564          $slideEl.append($shadowAfterEl);
15565        }
15566        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
15567        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;
15568      }
15569    }
15570
15571    // Set correct perspective for IE10
15572    if (Support.pointerEvents || Support.prefixedPointerEvents) {
15573      const ws = $wrapperEl[0].style;
15574      ws.perspectiveOrigin = `${center}px 50%`;
15575    }
15576  },
15577  setTransition(duration) {
15578    const swiper = this;
15579    swiper.slides
15580      .transition(duration)
15581      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
15582      .transition(duration);
15583  },
15584};
15585
15586var EffectCoverflow = {
15587  name: 'effect-coverflow',
15588  params: {
15589    coverflowEffect: {
15590      rotate: 50,
15591      stretch: 0,
15592      depth: 100,
15593      scale: 1,
15594      modifier: 1,
15595      slideShadows: true,
15596    },
15597  },
15598  create() {
15599    const swiper = this;
15600    Utils.extend(swiper, {
15601      coverflowEffect: {
15602        setTranslate: Coverflow.setTranslate.bind(swiper),
15603        setTransition: Coverflow.setTransition.bind(swiper),
15604      },
15605    });
15606  },
15607  on: {
15608    beforeInit() {
15609      const swiper = this;
15610      if (swiper.params.effect !== 'coverflow') return;
15611
15612      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);
15613      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
15614
15615      swiper.params.watchSlidesProgress = true;
15616      swiper.originalParams.watchSlidesProgress = true;
15617    },
15618    setTranslate() {
15619      const swiper = this;
15620      if (swiper.params.effect !== 'coverflow') return;
15621      swiper.coverflowEffect.setTranslate();
15622    },
15623    setTransition(duration) {
15624      const swiper = this;
15625      if (swiper.params.effect !== 'coverflow') return;
15626      swiper.coverflowEffect.setTransition(duration);
15627    },
15628  },
15629};
15630
15631const Thumbs = {
15632  init() {
15633    const swiper = this;
15634    const { thumbs: thumbsParams } = swiper.params;
15635    const SwiperClass = swiper.constructor;
15636    if (thumbsParams.swiper instanceof SwiperClass) {
15637      swiper.thumbs.swiper = thumbsParams.swiper;
15638      Utils.extend(swiper.thumbs.swiper.originalParams, {
15639        watchSlidesProgress: true,
15640        slideToClickedSlide: false,
15641      });
15642      Utils.extend(swiper.thumbs.swiper.params, {
15643        watchSlidesProgress: true,
15644        slideToClickedSlide: false,
15645      });
15646    } else if (Utils.isObject(thumbsParams.swiper)) {
15647      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
15648        watchSlidesVisibility: true,
15649        watchSlidesProgress: true,
15650        slideToClickedSlide: false,
15651      }));
15652      swiper.thumbs.swiperCreated = true;
15653    }
15654    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
15655    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
15656  },
15657  onThumbClick() {
15658    const swiper = this;
15659    const thumbsSwiper = swiper.thumbs.swiper;
15660    if (!thumbsSwiper) return;
15661    const clickedIndex = thumbsSwiper.clickedIndex;
15662    const clickedSlide = thumbsSwiper.clickedSlide;
15663    if (clickedSlide && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
15664    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
15665    let slideToIndex;
15666    if (thumbsSwiper.params.loop) {
15667      slideToIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__["$"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
15668    } else {
15669      slideToIndex = clickedIndex;
15670    }
15671    if (swiper.params.loop) {
15672      let currentIndex = swiper.activeIndex;
15673      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
15674        swiper.loopFix();
15675        // eslint-disable-next-line
15676        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
15677        currentIndex = swiper.activeIndex;
15678      }
15679      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
15680      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
15681      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;
15682      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;
15683      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;
15684      else slideToIndex = prevIndex;
15685    }
15686    swiper.slideTo(slideToIndex);
15687  },
15688  update(initial) {
15689    const swiper = this;
15690    const thumbsSwiper = swiper.thumbs.swiper;
15691    if (!thumbsSwiper) return;
15692
15693    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
15694      ? thumbsSwiper.slidesPerViewDynamic()
15695      : thumbsSwiper.params.slidesPerView;
15696
15697    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
15698    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
15699    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
15700      let currentThumbsIndex = thumbsSwiper.activeIndex;
15701      let newThumbsIndex;
15702      let direction;
15703      if (thumbsSwiper.params.loop) {
15704        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
15705          thumbsSwiper.loopFix();
15706          // eslint-disable-next-line
15707          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
15708          currentThumbsIndex = thumbsSwiper.activeIndex;
15709        }
15710        // Find actual thumbs index to slide to
15711        const prevThumbsIndex = thumbsSwiper.slides
15712          .eq(currentThumbsIndex)
15713          .prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
15714          .index();
15715        const nextThumbsIndex = thumbsSwiper.slides
15716          .eq(currentThumbsIndex)
15717          .nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0)
15718          .index();
15719        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;
15720        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;
15721        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;
15722        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;
15723        else newThumbsIndex = prevThumbsIndex;
15724        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
15725      } else {
15726        newThumbsIndex = swiper.realIndex;
15727        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
15728      }
15729      if (useOffset) {
15730        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
15731      }
15732
15733      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
15734        if (thumbsSwiper.params.centeredSlides) {
15735          if (newThumbsIndex > currentThumbsIndex) {
15736            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
15737          } else {
15738            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
15739          }
15740        } else if (newThumbsIndex > currentThumbsIndex) {
15741          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
15742        }
15743        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
15744      }
15745    }
15746
15747    // Activate thumbs
15748    let thumbsToActivate = 1;
15749    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
15750
15751    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
15752      thumbsToActivate = swiper.params.slidesPerView;
15753    }
15754
15755    if (!swiper.params.thumbs.multipleActiveThumbs) {
15756      thumbsToActivate = 1;
15757    }
15758
15759    thumbsToActivate = Math.floor(thumbsToActivate);
15760
15761    thumbsSwiper.slides.removeClass(thumbActiveClass);
15762    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {
15763      for (let i = 0; i < thumbsToActivate; i += 1) {
15764        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
15765      }
15766    } else {
15767      for (let i = 0; i < thumbsToActivate; i += 1) {
15768        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
15769      }
15770    }
15771  },
15772};
15773var Thumbs$1 = {
15774  name: 'thumbs',
15775  params: {
15776    thumbs: {
15777      swiper: null,
15778      multipleActiveThumbs: true,
15779      autoScrollOffset: 0,
15780      slideThumbActiveClass: 'swiper-slide-thumb-active',
15781      thumbsContainerClass: 'swiper-container-thumbs',
15782    },
15783  },
15784  create() {
15785    const swiper = this;
15786    Utils.extend(swiper, {
15787      thumbs: {
15788        swiper: null,
15789        init: Thumbs.init.bind(swiper),
15790        update: Thumbs.update.bind(swiper),
15791        onThumbClick: Thumbs.onThumbClick.bind(swiper),
15792      },
15793    });
15794  },
15795  on: {
15796    beforeInit() {
15797      const swiper = this;
15798      const { thumbs } = swiper.params;
15799      if (!thumbs || !thumbs.swiper) return;
15800      swiper.thumbs.init();
15801      swiper.thumbs.update(true);
15802    },
15803    slideChange() {
15804      const swiper = this;
15805      if (!swiper.thumbs.swiper) return;
15806      swiper.thumbs.update();
15807    },
15808    update() {
15809      const swiper = this;
15810      if (!swiper.thumbs.swiper) return;
15811      swiper.thumbs.update();
15812    },
15813    resize() {
15814      const swiper = this;
15815      if (!swiper.thumbs.swiper) return;
15816      swiper.thumbs.update();
15817    },
15818    observerUpdate() {
15819      const swiper = this;
15820      if (!swiper.thumbs.swiper) return;
15821      swiper.thumbs.update();
15822    },
15823    setTransition(duration) {
15824      const swiper = this;
15825      const thumbsSwiper = swiper.thumbs.swiper;
15826      if (!thumbsSwiper) return;
15827      thumbsSwiper.setTransition(duration);
15828    },
15829    beforeDestroy() {
15830      const swiper = this;
15831      const thumbsSwiper = swiper.thumbs.swiper;
15832      if (!thumbsSwiper) return;
15833      if (swiper.thumbs.swiperCreated && thumbsSwiper) {
15834        thumbsSwiper.destroy();
15835      }
15836    },
15837  },
15838};
15839
15840// Swiper Class
15841
15842const components = [
15843  Device$1,
15844  Support$1,
15845  Browser$1,
15846  Resize,
15847  Observer$1,
15848  Virtual$1,
15849  Keyboard$1,
15850  Mousewheel$1,
15851  Navigation$1,
15852  Pagination$1,
15853  Scrollbar$1,
15854  Parallax$1,
15855  Zoom$1,
15856  Lazy$1,
15857  Controller$1,
15858  A11y,
15859  History$1,
15860  HashNavigation$1,
15861  Autoplay$1,
15862  EffectFade,
15863  EffectCube,
15864  EffectFlip,
15865  EffectCoverflow,
15866  Thumbs$1
15867];
15868
15869if (typeof Swiper.use === 'undefined') {
15870  Swiper.use = Swiper.Class.use;
15871  Swiper.installModule = Swiper.Class.installModule;
15872}
15873
15874Swiper.use(components);
15875
15876/* harmony default export */ __webpack_exports__["default"] = (Swiper);
15877//# sourceMappingURL=swiper.esm.bundle.js.map
15878
15879
15880/***/ }),
15881
vendor: 2,546 bytes, lines 15882-15940
15882/***/ "./node_modules/tealight/dist/tealight.es.js":
15883/*!***************************************************!*\
15884  !*** ./node_modules/tealight/dist/tealight.es.js ***!
15885  \***************************************************/
15886/*! exports provided: default */
15887/***/ (function(module, __webpack_exports__, __webpack_require__) {
15888
15889"use strict";
15890__webpack_require__.r(__webpack_exports__);
15891/* harmony import */ var is_dom_node__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-dom-node */ "./node_modules/is-dom-node/dist/is-dom-node.es.js");
15892/* harmony import */ var is_dom_node_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! is-dom-node-list */ "./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js");
15893/*! @license Tealight v0.3.6
15894
15895	Copyright 2018 Fisssion LLC.
15896
15897	Permission is hereby granted, free of charge, to any person obtaining a copy
15898	of this software and associated documentation files (the "Software"), to deal
15899	in the Software without restriction, including without limitation the rights
15900	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15901	copies of the Software, and to permit persons to whom the Software is
15902	furnished to do so, subject to the following conditions:
15903
15904	The above copyright notice and this permission notice shall be included in all
15905	copies or substantial portions of the Software.
15906
15907	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15908	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15909	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15910	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15911	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15912	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
15913	SOFTWARE.
15914
15915*/
15916
15917
15918
15919function tealight(target, context) {
15920  if ( context === void 0 ) context = document;
15921
15922  if (target instanceof Array) { return target.filter(is_dom_node__WEBPACK_IMPORTED_MODULE_0__["default"]); }
15923  if (Object(is_dom_node__WEBPACK_IMPORTED_MODULE_0__["default"])(target)) { return [target]; }
15924  if (Object(is_dom_node_list__WEBPACK_IMPORTED_MODULE_1__["default"])(target)) { return Array.prototype.slice.call(target); }
15925  if (typeof target === "string") {
15926    try {
15927      var query = context.querySelectorAll(target);
15928      return Array.prototype.slice.call(query);
15929    } catch (err) {
15930      return [];
15931    }
15932  }
15933  return [];
15934}
15935
15936/* harmony default export */ __webpack_exports__["default"] = (tealight);
15937
15938
15939/***/ }),
15940
vendor: 5,990 bytes, lines 15941-15957
15941/***/ "./node_modules/vanilla-lazyload/dist/lazyload.min.js":
15942/*!************************************************************!*\
15943  !*** ./node_modules/vanilla-lazyload/dist/lazyload.min.js ***!
15944  \************************************************************/
15945/*! no static exports found */
15946/***/ (function(module, exports, __webpack_require__) {
15947
15948var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t,e){"object"===( false?undefined:_typeof(exports))&&"undefined"!=typeof module?module.exports=e(): true?!(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),
15949				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15950				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
15951				__WEBPACK_AMD_DEFINE_FACTORY__),
15952				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined}(this,function(){"use strict";var t="undefined"!=typeof window,e=t&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),n=t&&"IntersectionObserver"in window,o=t&&"classList"in document.createElement("p"),r={elements_selector:"img",container:e||t?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",class_loading:"loading",class_loaded:"loaded",class_error:"error",load_delay:0,auto_unobserve:!0,callback_enter:null,callback_exit:null,callback_reveal:null,callback_loaded:null,callback_error:null,callback_finish:null},a=function(t,e){return t.getAttribute("data-"+e)},s=function(t,e,n){var o="data-"+e;null!==n?t.setAttribute(o,n):t.removeAttribute(o)},i=function(t){return"true"===a(t,"was-processed")},c=function(t,e){return s(t,"ll-timeout",e)},l=function(t){return a(t,"ll-timeout")},u=function(t,e){var n,o=new t(e);try{n=new CustomEvent("LazyLoad::Initialized",{detail:{instance:o}})}catch(t){(n=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:o})}window.dispatchEvent(n)};var d=function(t,e){t&&t(e)},f=function(t,e){t._loadingCount+=e,0===t._elements.length&&0===t._loadingCount&&d(t._settings.callback_finish)},_=function(t){for(var e,n=[],o=0;e=t.children[o];o+=1)"SOURCE"===e.tagName&&n.push(e);return n},v=function(t,e,n){n&&t.setAttribute(e,n)},b=function(t,e){v(t,"sizes",a(t,e.data_sizes)),v(t,"srcset",a(t,e.data_srcset)),v(t,"src",a(t,e.data_src))},g={IMG:function(t,e){var n=t.parentNode;n&&"PICTURE"===n.tagName&&_(n).forEach(function(t){b(t,e)});b(t,e)},IFRAME:function(t,e){v(t,"src",a(t,e.data_src))},VIDEO:function(t,e){_(t).forEach(function(t){v(t,"src",a(t,e.data_src))}),v(t,"src",a(t,e.data_src)),t.load()}},m=function(t,e){var n,o,r=e._settings,s=t.tagName,i=g[s];if(i)return i(t,r),f(e,1),void(e._elements=(n=e._elements,o=t,n.filter(function(t){return t!==o})));!function(t,e){var n=a(t,e.data_src),o=a(t,e.data_bg);n&&(t.style.backgroundImage='url("'.concat(n,'")')),o&&(t.style.backgroundImage=o)}(t,r)},h=function(t,e){o?t.classList.add(e):t.className+=(t.className?" ":"")+e},p=function(t,e,n){t.addEventListener(e,n)},y=function(t,e,n){t.removeEventListener(e,n)},E=function(t,e,n){y(t,"load",e),y(t,"loadeddata",e),y(t,"error",n)},w=function(t,e,n){var r=n._settings,a=e?r.class_loaded:r.class_error,s=e?r.callback_loaded:r.callback_error,i=t.target;!function(t,e){o?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\s+)"+e+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}(i,r.class_loading),h(i,a),d(s,i),f(n,-1)},k=function(t,e){var n=function n(r){w(r,!0,e),E(t,n,o)},o=function o(r){w(r,!1,e),E(t,n,o)};!function(t,e,n){p(t,"load",e),p(t,"loadeddata",e),p(t,"error",n)}(t,n,o)},I=["IMG","IFRAME","VIDEO"],L=function(t,e){var n=e._observer;z(t,e),n&&e._settings.auto_unobserve&&n.unobserve(t)},x=function(t){var e=l(t);e&&(clearTimeout(e),c(t,null))},A=function(t,e){var n=e._settings.load_delay,o=l(t);o||(o=setTimeout(function(){L(t,e),x(t)},n),c(t,o))},z=function(t,e,n){var o=e._settings;!n&&i(t)||(I.indexOf(t.tagName)>-1&&(k(t,e),h(t,o.class_loading)),m(t,e),function(t){s(t,"was-processed","true")}(t),d(o.callback_reveal,t),d(o.callback_set,t))},O=function(t){return!!n&&(t._observer=new IntersectionObserver(function(e){e.forEach(function(e){return function(t){return t.isIntersecting||t.intersectionRatio>0}(e)?function(t,e){var n=e._settings;d(n.callback_enter,t),n.load_delay?A(t,e):L(t,e)}(e.target,t):function(t,e){var n=e._settings;d(n.callback_exit,t),n.load_delay&&x(t)}(e.target,t)})},{root:(e=t._settings).container===document?null:e.container,rootMargin:e.thresholds||e.threshold+"px"}),!0);var e},N=function(t,e){this._settings=function(t){return _extends({},r,t)}(t),this._loadingCount=0,O(this),this.update(e)};return N.prototype={update:function(t){var n=this,o=this._settings,r=t||o.container.querySelectorAll(o.elements_selector);this._elements=function(t){return t.filter(function(t){return!i(t)})}(Array.prototype.slice.call(r)),!e&&this._observer?this._elements.forEach(function(t){n._observer.observe(t)}):this.loadAll()},destroy:function(){var t=this;this._observer&&(this._elements.forEach(function(e){t._observer.unobserve(e)}),this._observer=null),this._elements=null,this._settings=null},load:function(t,e){z(t,this,e)},loadAll:function(){var t=this;this._elements.forEach(function(e){L(e,t)})}},t&&function(t,e){if(e)if(e.length)for(var n,o=0;n=e[o];o+=1)u(t,n);else u(t,e)}(N,window.lazyLoadOptions),N});
15953//# sourceMappingURL=lazyload.min.js.map
15954
15955
15956/***/ }),
15957
vendor: 724 bytes, lines 15958-15988
15958/***/ "./node_modules/webpack/buildin/global.js":
15959/*!***********************************!*\
15960  !*** (webpack)/buildin/global.js ***!
15961  \***********************************/
15962/*! no static exports found */
15963/***/ (function(module, exports) {
15964
15965var g;
15966
15967// This works in non-strict mode
15968g = (function() {
15969	return this;
15970})();
15971
15972try {
15973	// This works if eval is allowed (see CSP)
15974	g = g || new Function("return this")();
15975} catch (e) {
15976	// This works if the window reference is available
15977	if (typeof window === "object") g = window;
15978}
15979
15980// g can still be undefined, but nothing to do about it...
15981// We return undefined, instead of nothing here, so it's
15982// easier to handle this case. if(!global) { ...}
15983
15984module.exports = g;
15985
15986
15987/***/ }),
15988
15989/***/ "./wp-content/themes/otrocheyon/assets/src/js/app-front-page.js":
15990/*!**********************************************************************!*\
15991  !*** ./wp-content/themes/otrocheyon/assets/src/js/app-front-page.js ***!
15992  \**********************************************************************/
15993/*! no exports provided */
15994/***/ (function(module, __webpack_exports__, __webpack_require__) {
15995
15996"use strict";
15997__webpack_require__.r(__webpack_exports__);
15998/* harmony import */ var _otrocheyon_scss_app_front_page_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @otrocheyon/scss/app-front-page.scss */ "./wp-content/themes/otrocheyon/assets/src/scss/app-front-page.scss");
15999/* harmony import */ var _otrocheyon_scss_app_front_page_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_otrocheyon_scss_app_front_page_scss__WEBPACK_IMPORTED_MODULE_0__);
16000/* harmony import */ var _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @otrocheyon/js/services/utils */ "./wp-content/themes/otrocheyon/assets/src/js/services/utils.js");
16001/* harmony import */ var _otrocheyon_js_services_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @otrocheyon/js/services/form */ "./wp-content/themes/otrocheyon/assets/src/js/services/form.js");
16002/* harmony import */ var _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @otrocheyon/js/services/slider */ "./wp-content/themes/otrocheyon/assets/src/js/services/slider.js");
16003/* harmony import */ var _otrocheyon_js_services_menu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @otrocheyon/js/services/menu */ "./wp-content/themes/otrocheyon/assets/src/js/services/menu.js");
16004/* harmony import */ var _otrocheyon_js_services_instagram__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @otrocheyon/js/services/instagram */ "./wp-content/themes/otrocheyon/assets/src/js/services/instagram.js");
16005
16006
16007
16008
16009
16010
16011document.addEventListener("DOMContentLoaded", function () {
16012  // Utils
16013  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].click();
16014  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].autoNaving();
16015  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].google_translate();
16016  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].bootstrap();
16017  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].initializeProgressBar();
16018  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].searchbox();
16019  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].smooth_scroll();
16020  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].lazy();
16021  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].obfuscation();
16022  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].initializeAgendaLink();
16023  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].intializeRevealTitle();
16024  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].initializeCarnetThumbnail();
16025  _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_1__["default"].initializeBackToTop();
16026
16027  // Form
16028  _otrocheyon_js_services_form__WEBPACK_IMPORTED_MODULE_2__["default"].newsletter_email();
16029
16030  // Instagram
16031  _otrocheyon_js_services_instagram__WEBPACK_IMPORTED_MODULE_5__["default"].ajax_instagram();
16032  new _otrocheyon_js_services_menu__WEBPACK_IMPORTED_MODULE_4__["default"]();
16033
16034  // Slider
16035  _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__["default"].hero();
16036  _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__["default"].slider_strate_voyage();
16037  _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__["default"].slider_strate_highlight();
16038  _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__["default"].slider_agenda();
16039  _otrocheyon_js_services_slider__WEBPACK_IMPORTED_MODULE_3__["default"].slider_post();
16040});
16041
16042/***/ }),
16043
16044/***/ "./wp-content/themes/otrocheyon/assets/src/js/services/form.js":
16045/*!*********************************************************************!*\
16046  !*** ./wp-content/themes/otrocheyon/assets/src/js/services/form.js ***!
16047  \*********************************************************************/
16048/*! exports provided: default */
16049/***/ (function(module, __webpack_exports__, __webpack_require__) {
16050
16051"use strict";
16052__webpack_require__.r(__webpack_exports__);
16053/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Form; });
16054function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16055function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16056function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
16057function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16058function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16059function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16060var Form = /*#__PURE__*/function () {
16061  function Form() {
16062    _classCallCheck(this, Form);
16063    Form.select();
16064    Form.newsletter_email();
16065    Form.form_animation();
16066  }
16067  return _createClass(Form, null, [{
16068    key: "select",
16069    value: function select() {
16070      $('select').parent().not('.formSelect').children('select').wrap('<div class="formSelect"></div>');
16071    }
16072
16073    /* Newsletter
16074    /* ============================================= */
16075  }, {
16076    key: "newsletter_email",
16077    value: function newsletter_email() {
16078      if ($('#field_newsletter-email').length > 0) {
16079        var email = $POST_EMAIL;
16080        $('#field_newsletter-email').attr('value', email);
16081      }
16082    }
16083
16084    /* Form animation
16085       /* ============================================= */
16086  }, {
16087    key: "form_animation",
16088    value: function form_animation() {
16089      var $input = $(".formGroup--text input, .formGroup--textarea textarea, .formGroup--select select, .formGroup--phone input, .formGroup--number input, .formGroup--email input, #newsletter-field, .wpSearchFormItem--input");
16090      $input.each(function () {
16091        if ($(this).val().length != 0) {
16092          $(this).closest('.frm_form_field').find('label').addClass("label-active");
16093        }
16094      });
16095      $input.focusin(function () {
16096        $(this).closest('.frm_form_field').find('label').addClass("label-active");
16097      });
16098      $input.focusout(function () {
16099        if ($(this).val().length == 0) {
16100          $(this).closest('.frm_form_field').find('label').removeClass("label-active");
16101        }
16102      });
16103    }
16104  }]);
16105}();
16106
16107/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16108
16109/***/ }),
16110
16111/***/ "./wp-content/themes/otrocheyon/assets/src/js/services/instagram.js":
16112/*!**************************************************************************!*\
16113  !*** ./wp-content/themes/otrocheyon/assets/src/js/services/instagram.js ***!
16114  \**************************************************************************/
16115/*! exports provided: default */
16116/***/ (function(module, __webpack_exports__, __webpack_require__) {
16117
16118"use strict";
16119__webpack_require__.r(__webpack_exports__);
16120/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Instagram; });
16121/* harmony import */ var _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @otrocheyon/js/services/utils */ "./wp-content/themes/otrocheyon/assets/src/js/services/utils.js");
16122function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16123function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16124function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
16125function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16126function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16127function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16128
16129var Instagram = /*#__PURE__*/function () {
16130  function Instagram() {
16131    _classCallCheck(this, Instagram);
16132    Instagram.ajax_instagram();
16133  }
16134  return _createClass(Instagram, null, [{
16135    key: "ajax_instagram",
16136    value: function ajax_instagram() {
16137      var $wrapper = $('[data-id="wpiris-instagram-wall"]');
16138      if ($wrapper.length > 0) {
16139        self = this;
16140        $.ajax({
16141          url: Theme.ajax_url,
16142          data: {
16143            'action': 'social_wall'
16144          },
16145          type: 'POST',
16146          success: function success(socialData) {
16147            $wrapper.append(socialData);
16148            _otrocheyon_js_services_utils__WEBPACK_IMPORTED_MODULE_0__["default"].lazy();
16149          }
16150        });
16151      }
16152    }
16153  }]);
16154}();
16155
16156/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16157
16158/***/ }),
16159
16160/***/ "./wp-content/themes/otrocheyon/assets/src/js/services/menu.js":
16161/*!*********************************************************************!*\
16162  !*** ./wp-content/themes/otrocheyon/assets/src/js/services/menu.js ***!
16163  \*********************************************************************/
16164/*! exports provided: default */
16165/***/ (function(module, __webpack_exports__, __webpack_require__) {
16166
16167"use strict";
16168__webpack_require__.r(__webpack_exports__);
16169/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Menu; });
16170function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16171function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16172function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
16173function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16174function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16175function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16176var Menu = /*#__PURE__*/function () {
16177  function Menu() {
16178    _classCallCheck(this, Menu);
16179    Menu.initializeBurgerMenu();
16180    Menu.subMenuEvent();
16181  }
16182  return _createClass(Menu, null, [{
16183    key: "initializeBurgerMenu",
16184    value: function initializeBurgerMenu() {
16185      var burger_menu = '[data-burger-menu]';
16186      $(document).on('click', burger_menu, function (e) {
16187        $('body').toggleClass('noscroll wpiris-menuOpen');
16188        $(this).toggleClass('open');
16189        $('.wpirisMenu').toggleClass('open');
16190        $('.sub-menu-open').removeClass('sub-menu-open');
16191      });
16192    }
16193  }, {
16194    key: "subMenuEvent",
16195    value: function subMenuEvent() {
16196      var $menuEntryLinks = $('.mainnav .main-entry.has-submenu .main-entry__link');
16197      var $subMenuReturn = $('[data-trigger="sub-menu-return"]');
16198      if (window.matchMedia("(max-width: 1200px)").matches) {
16199        $menuEntryLinks.on('click', function (e) {
16200          e.preventDefault();
16201          $menuEntryLinks.find('+ .sub-menu').removeClass('sub-menu-open');
16202          $(this).find('+ .sub-menu').addClass('sub-menu-open');
16203          $(this).parents('.wpirisMenu').addClass('has-sub-menu-open');
16204        });
16205        $subMenuReturn.on('click', function (e) {
16206          $(this).parents('.sub-menu-open').removeClass('sub-menu-open');
16207          $(this).parents('.wpirisMenu').removeClass('has-sub-menu-open');
16208        });
16209      }
16210    }
16211  }, {
16212    key: "menu",
16213    value: function menu() {
16214      var element = "#wpiris-menu";
16215      var a = "[data-id='wpiris-menu'] ul:not(.sub-menu) > li > a";
16216      var li = "[data-id='wpiris-menu'] ul:not(.sub-menu) > li";
16217      var a_open = "[data-id='wpiris-menu'] ul:not(.sub-menu) > li.isOpen > a";
16218      if (window.matchMedia("(min-width: 1000px)").matches) {
16219        $(document).on('click', a, function (e) {
16220          $(a).parent().removeClass('isOpen');
16221          $(a).parent().addClass('disabled');
16222          $(this).parent().removeClass('disabled');
16223          if ($(this).parent().hasClass('menu-item-has-children')) {
16224            e.preventDefault();
16225            $(this).parent().addClass('isOpen');
16226            $(element).addClass('submenuOpen');
16227          }
16228        });
16229
16230        // Second click
16231        $(document).on('click', a_open, function (e) {
16232          window.location = e.target.href;
16233        });
16234      } else {
16235        // Menu mobile
16236
16237        $("[data-id='wpiris-menu'] ul:not(.sub-menu) > li > .sub-menu").prepend('<li data-trigger="wpiris-menu-back"><a href="#">retour</a></li>');
16238        $(document).on("click", '[data-trigger="wpiris-menu-more"]', function () {
16239          $(this).parents('li').addClass('submenuOpen');
16240        });
16241
16242        // Lors du clic sur le li "dl-back" on supprime la class 'ouvert' sur le li.
16243        $(document).on("click", '[data-trigger="wpiris-menu-back"]', function () {
16244          var ul_parent = $(this).parent();
16245          var li_parent = $(this).parent().parent();
16246          $(ul_parent).stop().animate({
16247            opacity: 0.25,
16248            left: "100%"
16249          }, function () {
16250            $(this).css({
16251              display: 'none'
16252            });
16253          });
16254        });
16255      }
16256    }
16257  }]);
16258}();
16259
16260/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16261
16262/***/ }),
16263
16264/***/ "./wp-content/themes/otrocheyon/assets/src/js/services/slider.js":
16265/*!***********************************************************************!*\
16266  !*** ./wp-content/themes/otrocheyon/assets/src/js/services/slider.js ***!
16267  \***********************************************************************/
16268/*! exports provided: default */
16269/***/ (function(module, __webpack_exports__, __webpack_require__) {
16270
16271"use strict";
16272__webpack_require__.r(__webpack_exports__);
16273/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Slider; });
16274/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/js/swiper.esm.bundle.js");
16275/* harmony import */ var _otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @otrocheyon/js/tools/swiper */ "./wp-content/themes/otrocheyon/assets/src/js/tools/swiper.js");
16276function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16277function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16278function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
16279function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16280function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16281function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16282
16283
16284var Slider = /*#__PURE__*/function () {
16285  function Slider() {
16286    _classCallCheck(this, Slider);
16287    Slider.hero();
16288    Slider.slider_strate_voyage();
16289    Slider.slider_strate_highlight();
16290    Slider.slider_post();
16291    Slider.slider_agenda();
16292    Slider.slider_related_post();
16293  }
16294  return _createClass(Slider, null, [{
16295    key: "add_swiper_class",
16296    value: function add_swiper_class(container, wrapper, item) {
16297      $(container).addClass('swiper-container');
16298      $(wrapper).addClass('swiper-wrapper');
16299      $(item).addClass('swiper-slide');
16300    }
16301  }, {
16302    key: "hero",
16303    value: function hero() {
16304      var slider = '[data-id="wpiris-hero-slider"]',
16305        slider_wrapper = '[data-id="wpiris-hero-slider-wrapper"]',
16306        slider_item = '[data-id="wpiris-hero-slider-item"]';
16307      if ($(slider).length > 0 && $(slider_item).length > 1) {
16308        Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16309        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16310          mousewheel: {
16311            forceToAxis: true
16312          },
16313          autoplay: {},
16314          speed: 600,
16315          slidesPerView: 1,
16316          loop: true,
16317          lazy: true,
16318          pagination: {
16319            el: '[data-trigger="swiper-dots"]',
16320            clickable: true
16321          }
16322        });
16323      }
16324    }
16325  }, {
16326    key: "slider_strate_voyage",
16327    value: function slider_strate_voyage() {
16328      var slider = '[data-id="wpiris-voyage"]',
16329        slider_wrapper = '[data-id="wpiris-voyage-wrapper"]',
16330        slider_item = '[data-id="wpiris-voyage-item"]';
16331      if ($(slider).length > 0) {
16332        Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16333        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16334          mousewheel: {
16335            forceToAxis: true
16336          },
16337          effect: 'fade',
16338          fadeEffect: {
16339            crossFade: true
16340          },
16341          autoplay: {},
16342          speed: 600,
16343          slidesPerView: 1,
16344          loop: true,
16345          lazy: true,
16346          pagination: {
16347            el: '[data-trigger="swiper-dots-voyage"]',
16348            clickable: true
16349          }
16350        });
16351      }
16352    }
16353  }, {
16354    key: "slider_strate_highlight",
16355    value: function slider_strate_highlight() {
16356      var slider = '[data-id="wpiris-highlightHome"]',
16357        slider_wrapper = '[data-id="wpiris-highlightHome-wrapper"]',
16358        slider_item = '[data-id="wpiris-highlight-item"]';
16359      if ($(slider).length > 0) {
16360        Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16361        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16362          mousewheel: {
16363            forceToAxis: true
16364          },
16365          speed: 600,
16366          slidesPerView: 1,
16367          spaceBetween: 10,
16368          loop: false,
16369          lazy: true,
16370          navigation: {
16371            nextEl: '.swiperNav .swiper-button-next',
16372            prevEl: '.swiperNav .swiper-button-prev'
16373          },
16374          breakpoints: {
16375            750: {
16376              slidesPerView: 2,
16377              spaceBetween: 40
16378            }
16379          }
16380        });
16381      }
16382    }
16383  }, {
16384    key: "slider_post",
16385    value: function slider_post() {
16386      var slider = '[data-id="wpiris-postHome"]',
16387        slider_wrapper = '[data-id="wpiris-postHome-wrapper"]',
16388        slider_item = '[data-id="wpiris-postHome-item"]';
16389      if ($(slider).length > 0) {
16390        if (window.matchMedia("(max-width: 750px)").matches && $(slider_item).length > 2) {
16391          Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16392          new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16393            mousewheel: {
16394              forceToAxis: true
16395            },
16396            spaceBetween: 10,
16397            freeMode: true,
16398            loop: true,
16399            lazy: true,
16400            speed: 600,
16401            slidesPerView: 1,
16402            pagination: {
16403              el: '[data-trigger="swiper-dots-postHome"]',
16404              clickable: true
16405            }
16406          });
16407        }
16408      }
16409    }
16410  }, {
16411    key: "slider_agenda",
16412    value: function slider_agenda() {
16413      var slider = '[data-id="wpiris-agenda"]',
16414        slider_wrapper = '[data-id="wpiris-agenda-wrapper"]',
16415        slider_item = '[data-id="wpiris-agenda-item"]';
16416      if ($(slider).length > 0) {
16417        if (window.matchMedia("(max-width: 750px)").matches && $(slider_item).length > 2) {
16418          Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16419          new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16420            mousewheel: {
16421              forceToAxis: true
16422            },
16423            spaceBetween: 10,
16424            freeMode: true,
16425            loop: false,
16426            lazy: true,
16427            speed: 600,
16428            slidesPerView: 1
16429          });
16430        }
16431      }
16432    }
16433  }, {
16434    key: "slider_related_post",
16435    value: function slider_related_post() {
16436      var slider = '[data-id="wpiris-relatedpost"]',
16437        slider_wrapper = '[data-id="wpiris-relatedpost-wrapper"]',
16438        slider_item = '[data-id="wpiris-relatedpost-item"]';
16439      if ($(slider).length > 0) {
16440        Object(_otrocheyon_js_tools_swiper__WEBPACK_IMPORTED_MODULE_1__["add_swiper_class"])($(slider), $(slider_wrapper), $(slider_item));
16441        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]($(slider), {
16442          mousewheel: {
16443            forceToAxis: true
16444          },
16445          keyboard: true,
16446          spaceBetween: 10,
16447          freeMode: true,
16448          speed: 600,
16449          slidesPerView: 2,
16450          navigation: {
16451            nextEl: '.swiper-button-next',
16452            prevEl: '.swiper-button-prev'
16453          },
16454          breakpoints: {
16455            450: {
16456              slidesPerView: 1,
16457              spaceBetween: 10
16458            },
16459            750: {
16460              slidesPerView: 2,
16461              spaceBetween: 20
16462            },
16463            1200: {
16464              slidesPerView: 3,
16465              spaceBetween: 20
16466            },
16467            1450: {
16468              slidesPerView: 3,
16469              spaceBetween: 40
16470            }
16471          }
16472        });
16473      }
16474    }
16475  }]);
16476}();
16477
16478/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16479
16480/***/ }),
16481
16482/***/ "./wp-content/themes/otrocheyon/assets/src/js/services/utils.js":
16483/*!**********************************************************************!*\
16484  !*** ./wp-content/themes/otrocheyon/assets/src/js/services/utils.js ***!
16485  \**********************************************************************/
16486/*! exports provided: default */
16487/***/ (function(module, __webpack_exports__, __webpack_require__) {
16488
16489"use strict";
16490__webpack_require__.r(__webpack_exports__);
16491/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Utils; });
16492/* harmony import */ var _fancyapps_fancybox_dist_jquery_fancybox_min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @fancyapps/fancybox/dist/jquery.fancybox.min */ "./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.min.js");
16493/* harmony import */ var _fancyapps_fancybox_dist_jquery_fancybox_min__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_fancyapps_fancybox_dist_jquery_fancybox_min__WEBPACK_IMPORTED_MODULE_0__);
16494/* harmony import */ var bootstrap_js_src_collapse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! bootstrap/js/src/collapse */ "./node_modules/bootstrap/js/src/collapse.js");
16495/* harmony import */ var bootstrap_js_src_popover__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bootstrap/js/src/popover */ "./node_modules/bootstrap/js/src/popover.js");
16496/* harmony import */ var bootstrap_js_src_tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap/js/src/tooltip */ "./node_modules/bootstrap/js/src/tooltip.js");
16497/* harmony import */ var modernizr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! modernizr */ "./.modernizrrc.js");
16498/* harmony import */ var modernizr__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(modernizr__WEBPACK_IMPORTED_MODULE_4__);
16499/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vanilla-lazyload */ "./node_modules/vanilla-lazyload/dist/lazyload.min.js");
16500/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload__WEBPACK_IMPORTED_MODULE_5__);
16501/* harmony import */ var scrollreveal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! scrollreveal */ "./node_modules/scrollreveal/dist/scrollreveal.es.js");
16502function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16503function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16504function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
16505function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
16506function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16507function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16508
16509//import 'bootstrap/js/src/dropdown';
16510
16511
16512
16513
16514
16515
16516var Utils = /*#__PURE__*/function () {
16517  function Utils() {
16518    _classCallCheck(this, Utils);
16519    Utils.autoNaving();
16520    Utils.google_translate();
16521    Utils.initializeProgressBar();
16522    Utils.click();
16523    Utils.bootstrap();
16524    Utils.fancybox();
16525    Utils.searchbox();
16526    Utils.modalExperiences();
16527    Utils.smooth_scroll();
16528    Utils.lazy();
16529    Utils.block_cover();
16530    Utils.obfuscation();
16531    Utils.tab_module();
16532    Utils.replace_broken_image();
16533    Utils.initializeAgendaLink();
16534    Utils.intializeRevealTitle();
16535    Utils.initializeCarnetThumbnail();
16536    Utils.checkExperienceBottomBar();
16537    Utils.initializeBackToTop();
16538  }
16539  return _createClass(Utils, null, [{
16540    key: "replace_broken_image",
16541    value: function replace_broken_image() {
16542      // For local environment only
16543      if (window.location.hostname.match(/.iris.io/)) {
16544        var preprod_url = 'https://rochesuryon.preprod5.irislab.top/';
16545        $('img').on('error', function (e) {
16546          var src = $(this).attr('src');
16547          var new_src = src.replace(Theme.server_url, preprod_url);
16548          $(this).attr('src', new_src);
16549        });
16550      }
16551    }
16552  }, {
16553    key: "autoNaving",
16554    value: function autoNaving() {
16555      var last_scroll_top = 0;
16556      $(window).on('load scroll', function () {
16557        var scroll_top = $(this).scrollTop();
16558        var $header = $('.navbar');
16559        if (scroll_top >= last_scroll_top && scroll_top > $header.outerHeight()) {
16560          // Down
16561          $('body').addClass('header-is-hidden');
16562        } else {
16563          // Up
16564          $('body').removeClass('header-is-hidden');
16565        }
16566        last_scroll_top = scroll_top;
16567
16568        // Site header color
16569        if ($('.header').length) {
16570          if (scroll_top > 100) {
16571            $header.removeClass('navbar--transparent');
16572            $('body').addClass('header-is-visible');
16573          } else {
16574            $header.addClass('navbar--transparent');
16575            $('body').removeClass('header-is-visible');
16576          }
16577        }
16578      });
16579    }
16580  }, {
16581    key: "google_translate",
16582    value: function google_translate() {
16583      var trigger = '[data-trigger="glt-selector"]',
16584        $element = $('[data-id="glt-selector"]');
16585      $element.on('click', function (e) {
16586        e.preventDefault();
16587        if (!$(event.target).closest('.gltSelectorInner').length) {
16588          $(this).fadeOut();
16589          updateCurrentLanguageToolbar();
16590        }
16591      });
16592      $element.find('.gltSelectorLangs a').on('click', function (e) {
16593        $element.fadeOut();
16594        updateCurrentLanguageToolbar();
16595      });
16596      $(trigger).on('click', function (e) {
16597        e.preventDefault();
16598        $element.fadeIn();
16599      });
16600      var updateCurrentLanguageToolbar = function updateCurrentLanguageToolbar() {
16601        window.setTimeout(function () {
16602          var current_language = $('html').attr('lang').replace(/-.*/gi, '');
16603          if (current_language == 'auto') {
16604            current_language = 'fr';
16605          }
16606          $(trigger).text(current_language);
16607        }, 500);
16608      };
16609      $(window).on('load', function () {
16610        updateCurrentLanguageToolbar();
16611      });
16612    }
16613  }, {
16614    key: "initializeProgressBar",
16615    value: function initializeProgressBar() {
16616      $(window).scroll(function () {
16617        var s = $(window).scrollTop(),
16618          h = $(document).height(),
16619          c = $(window).height(),
16620          scrollPercent = s / (h - c) * 100;
16621        $(".js-progressbar").attr('value', scrollPercent);
16622        $(".js-progressbar").css({
16623          'width': scrollPercent + '%'
16624        });
16625      });
16626    }
16627  }, {
16628    key: "click",
16629    value: function click() {
16630      var trigger = '[data-trigger="wpiris-click"]';
16631      if (!modernizr__WEBPACK_IMPORTED_MODULE_4___default.a.touchevents) {
16632        var ctrl = 0;
16633        $(window).on('keydown', function (e) {
16634          if (e.which == 17 || e.which == 91) {
16635            ctrl = true;
16636          }
16637        });
16638        $(window).on('keyup', function () {
16639          ctrl = false;
16640        });
16641        $(document).on('mouseup', trigger, function (e) {
16642          if (e.target.tagName.toLowerCase() !== 'a') {
16643            if (e.which == 1 || e.which == 2) {
16644              var blank = false;
16645              var url = $(this).find("a").attr("href");
16646              if (e.which == 2) {
16647                blank = true;
16648              } // Clic molette
16649              if ($(this).find("a").attr("target") == "_blank") {
16650                blank = true;
16651              }
16652              if (blank || ctrl) {
16653                window.open(url, '_blank');
16654              } else {
16655                window.location = url;
16656              }
16657              return false;
16658            }
16659          }
16660          return false;
16661        });
16662      } else {
16663        $(document).on('click', trigger, function (e) {
16664          var blank = false;
16665          var url = $(this).find("a").attr("href");
16666          if ($(this).find("a").attr("target") == "_blank") {
16667            blank = true;
16668          }
16669          if (blank) {
16670            window.open(url, '_blank');
16671          } else {
16672            window.location = url;
16673          }
16674          return false;
16675        });
16676      }
16677    }
16678  }, {
16679    key: "bootstrap",
16680    value: function bootstrap() {
16681      if (!modernizr__WEBPACK_IMPORTED_MODULE_4___default.a.touchevents) {
16682        $('[data-toggle="tooltip"]').tooltip({
16683          trigger: "hover"
16684        });
16685      }
16686      $('[data-toggle="popover"]').popover();
16687    }
16688  }, {
16689    key: "fancybox",
16690    value: function fancybox() {
16691      $('.hentry a:has(>img):not([target="_blank"]):not("[nofancybox]")').attr('data-fancybox', 'fancybox');
16692      var counter = 0;
16693      $('.hentry .wp-block-gallery').each(function () {
16694        counter++;
16695        $(this).find('a:has(>img)').attr('data-fancybox', 'wp-block-gallery-' + counter);
16696      });
16697      counter = 0;
16698      $('.hentry .wp-block-image').each(function () {
16699        counter++;
16700        $(this).find('a:has(>img):not([target="_blank"]):not("[nofancybox]")').attr('data-fancybox', 'wp-block-image-' + counter);
16701      });
16702      $('[data-fancybox]').fancybox({
16703        buttons: ["zoom", "slideShow", "close"],
16704        lang: "fr",
16705        i18n: {
16706          fr: {
16707            CLOSE: Theme.translate.fancybox_close,
16708            NEXT: Theme.translate.fancybox_next,
16709            PREV: Theme.translate.fancybox_prev,
16710            ERROR: Theme.translate.fancybox_error,
16711            PLAY_START: Theme.translate.fancybox_start,
16712            PLAY_STOP: Theme.translate.fancybox_stop,
16713            FULL_SCREEN: Theme.translate.fancybox_full_screen,
16714            THUMBS: Theme.translate.fancybox_thumbs,
16715            DOWNLOAD: Theme.translate.fancybox_download,
16716            SHARE: Theme.translate.fancybox_share,
16717            ZOOM: Theme.translate.fancybox_zoom
16718          }
16719        },
16720        caption: function caption(instance, item) {
16721          var caption = $(this).closest('figure').find('figcaption').html();
16722          if (!caption) {
16723            caption = $(this).find('img').attr('title');
16724          }
16725          if (!caption) {
16726            caption = $(this).find('img').attr('alt');
16727          }
16728          return caption;
16729        }
16730      });
16731    }
16732  }, {
16733    key: "searchbox",
16734    value: function searchbox() {
16735      var trigger = '[data-trigger="wpiris-search-layout"]',
16736        close = '[data-trigger="wpiris-search-layout-close"]',
16737        $element = $('[data-id="wpiris-search-layout"]');
16738      $(document).on('click', trigger, function (e) {
16739        e.preventDefault();
16740        $element.fadeIn().find('input').focus();
16741      });
16742      $(document).on('click', close, function (e) {
16743        e.preventDefault();
16744        $element.fadeOut();
16745      });
16746    }
16747  }, {
16748    key: "modalExperiences",
16749    value: function modalExperiences() {
16750      var trigger = '[data-trigger="experiences-modal-trigger"]',
16751        close = '[data-trigger="experiences-modal-close"]',
16752        $element = $('[data-id="experiences-modal"]');
16753      $(document).on('click', trigger, function (e) {
16754        e.preventDefault();
16755        $element.fadeIn();
16756      });
16757      $(document).on('click', close, function (e) {
16758        e.preventDefault();
16759        $element.fadeOut();
16760      });
16761    }
16762  }, {
16763    key: "smooth_scroll",
16764    value: function smooth_scroll() {
16765      var trigger = '[data-trigger="wpiris-scroll"]';
16766      $(document).on('click', trigger, function (e) {
16767        e.preventDefault();
16768        var target = $(this).attr("href") != '' ? $(this).attr("href") : $(this).attr("data-href"),
16769          duration = 1000,
16770          scroll_top = $(target).offset().top - (undefined !== e.currentTarget.dataset.shift ? e.currentTarget.dataset.shift : 0);
16771        $('html, body').animate({
16772          scrollTop: scroll_top
16773        }, {
16774          duration: duration,
16775          step: function step(now, fx) {
16776            var real_pos = scroll_top;
16777            if (fx.end !== real_pos) {
16778              fx.end = real_pos;
16779            }
16780          }
16781        });
16782      });
16783    }
16784  }, {
16785    key: "lazy",
16786    value: function lazy() {
16787      var lazyLoadInstance = new vanilla_lazyload__WEBPACK_IMPORTED_MODULE_5___default.a({
16788        elements_selector: '[data-src], [data-bg], [data-bg-hidpi]'
16789      });
16790      window.onbeforeprint = function () {
16791        lazyLoadInstance.loadAll();
16792      };
16793    }
16794  }, {
16795    key: "block_cover",
16796    value: function block_cover() {
16797      $('.wp-block-cover:has(.wp-block-cover__inner-container a)').attr('data-trigger', 'wpiris-click');
16798    }
16799  }, {
16800    key: "obfuscation",
16801    value: function obfuscation() {
16802      var element = "[data-obf]";
16803      if ($(element).length > 0) {
16804        if (!modernizr__WEBPACK_IMPORTED_MODULE_4___default.a.touchevents) {
16805          var ctrl = 0;
16806          $(window).on('keydown', function (e) {
16807            if (e.which == 17 || e.which == 91) {
16808              ctrl = true;
16809            }
16810          });
16811          $(window).on('keyup', function () {
16812            ctrl = false;
16813          });
16814          $(document).on('mouseup', element, function (e) {
16815            var url = atob($(this).attr('data-obf'));
16816            var target = $(this).attr('data-obf-target');
16817            if (e.which == 1 || e.which == 2) {
16818              var blank = false;
16819              if (e.which == 2) {
16820                blank = true;
16821              } // Clic molette
16822              if (target == "_blank") {
16823                blank = true;
16824              }
16825              if (blank || ctrl) {
16826                window.open(url, '_blank');
16827              } else {
16828                window.location = url;
16829              }
16830              return false;
16831            }
16832            return false;
16833          });
16834        } else {
16835          $(document).on('click', element, function (e) {
16836            var blank = false;
16837            var url = atob($(this).attr('data-obf'));
16838            var target = $(this).attr('data-obf-target');
16839            if (target == "_blank") {
16840              blank = true;
16841            }
16842            if (blank) {
16843              window.open(url, '_blank');
16844            } else {
16845              window.location = url;
16846            }
16847            return false;
16848          });
16849        }
16850      }
16851    }
16852  }, {
16853    key: "tab_module",
16854    value: function tab_module() {
16855      var trigger = '[data-trigger="wpiris-tab-module"]';
16856      $(document).on('click', trigger, function (e) {
16857        e.preventDefault();
16858        var $element = $(this),
16859          item = $element.attr('href');
16860        if (!$element.hasClass('is-active')) {
16861          $element.closest('.tabModule').find('.tabTrigger').removeClass('is-active');
16862          $element.addClass('is-active');
16863          $element.closest('.tabModule').find('.tabWrapper .tabItem').hide().removeClass('is-active');
16864          $(item).fadeIn().addClass('is-active');
16865          $element.trigger('tab-active');
16866        }
16867      });
16868    }
16869  }, {
16870    key: "initializeAgendaLink",
16871    value: function initializeAgendaLink() {
16872      $('[data-link-agenda]').on('click', function (e) {
16873        e.preventDefault();
16874        var rel = $(this).attr('rel');
16875        $('#datedebutlisting_18').val(rel);
16876        $('#agendaHomeForm').submit();
16877      });
16878    }
16879  }, {
16880    key: "intializeRevealTitle",
16881    value: function intializeRevealTitle() {
16882      if (!modernizr__WEBPACK_IMPORTED_MODULE_4___default.a.touchevents) {
16883        Object(scrollreveal__WEBPACK_IMPORTED_MODULE_6__["default"])().reveal('.strateTitle, .strateLocalisationExcerpt', {
16884          delay: 0,
16885          duration: 1500,
16886          reset: false,
16887          easing: 'ease',
16888          distance: '100%',
16889          origin: 'bottom',
16890          opacity: 0
16891        });
16892        Object(scrollreveal__WEBPACK_IMPORTED_MODULE_6__["default"])().reveal('.postItem', {
16893          delay: 500,
16894          interval: 500,
16895          duration: 1500,
16896          reset: false,
16897          easing: 'ease',
16898          distance: '10%',
16899          origin: 'bottom',
16900          opacity: 0
16901        });
16902        Object(scrollreveal__WEBPACK_IMPORTED_MODULE_6__["default"])().reveal('.strateAgendaList, .instagramList', {
16903          delay: 0,
16904          interval: 500,
16905          duration: 1500,
16906          reset: false,
16907          easing: 'ease',
16908          distance: '10%',
16909          origin: 'right',
16910          opacity: 0
16911        });
16912      }
16913    }
16914  }, {
16915    key: "initializeCarnetThumbnail",
16916    value: function initializeCarnetThumbnail() {
16917      $(".strateCarnetInfoItem .strateCarnetInfoItemContentTitle a").hover(function () {
16918        var imageSrc = $(this).attr('data-background');
16919        $('.strateCarnet').addClass('hover');
16920        $('.strateCarnetInfoItemThumbnail').css({
16921          'background-image': 'url(' + imageSrc + ')'
16922        });
16923      });
16924    }
16925  }, {
16926    key: "checkExperienceBottomBar",
16927    value: function checkExperienceBottomBar() {
16928      $(window).on('scroll', function (e) {
16929        if ($(this).scrollTop() > 250) {
16930          $('.footerExperiences').addClass('visible');
16931        } else {
16932          $('.footerExperiences').removeClass('visible');
16933        }
16934      });
16935    }
16936  }, {
16937    key: "initializeBackToTop",
16938    value: function initializeBackToTop() {
16939      $('.backtotop').on('click', function (e) {
16940        e.preventDefault();
16941        if ($(window).scrollTop() != 0) {
16942          $('html, body').animate({
16943            scrollTop: 0
16944          }, 300);
16945        }
16946      });
16947      $(window).on('scroll', function (e) {
16948        if ($(this).scrollTop() > 250) {
16949          $('.backtotop').addClass('backtotop--show');
16950        } else {
16951          $('.backtotop').removeClass('backtotop--show');
16952        }
16953      });
16954    }
16955  }]);
16956}();
16957
16958/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16959
16960/***/ }),
16961
16962/***/ "./wp-content/themes/otrocheyon/assets/src/js/tools/swiper.js":
16963/*!********************************************************************!*\
16964  !*** ./wp-content/themes/otrocheyon/assets/src/js/tools/swiper.js ***!
16965  \********************************************************************/
16966/*! exports provided: add_swiper_class, swiper_destroy */
16967/***/ (function(module, __webpack_exports__, __webpack_require__) {
16968
16969"use strict";
16970__webpack_require__.r(__webpack_exports__);
16971/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "add_swiper_class", function() { return add_swiper_class; });
16972/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "swiper_destroy", function() { return swiper_destroy; });
16973/**
16974 *
16975 * @param container
16976 * @param wrapper
16977 * @param item
16978 */
16979var add_swiper_class = function add_swiper_class(container, wrapper, item) {
16980  $(container).addClass('swiper-container');
16981  $(wrapper).addClass('swiper-wrapper');
16982  $(item).addClass('swiper-slide');
16983};
16984
16985/**
16986 *
16987 * @param element
16988 */
16989var swiper_destroy = function swiper_destroy(element) {
16990  $(element).each(function () {
16991    this.swiper.destroy();
16992  });
16993};
16994/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
16995
16996/***/ }),
16997
16998/***/ "./wp-content/themes/otrocheyon/assets/src/scss/app-front-page.scss":
16999/*!**************************************************************************!*\
17000  !*** ./wp-content/themes/otrocheyon/assets/src/scss/app-front-page.scss ***!
17001  \**************************************************************************/
17002/*! no static exports found */
17003/***/ (function(module, exports) {
17004
17005// removed by extract-text-webpack-plugin
17006
17007/***/ })
17007,
17008
17009/***/ "jquery":
17010/*!*************************!*\
17011  !*** external "jQuery" ***!
17012  \*************************/
17013/*! no static exports found */
17014/***/ (function(module, exports) {
17015
17016module.exports = jQuery;
17017
17018/***/ })
17019
17020/******/ });
17021//# sourceMappingURL=app-front-page.min.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.