Skip to content

Instantly share code, notes, and snippets.

@JacobDB
Created April 10, 2019 13:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JacobDB/9afad6ce3ac079e49186bbb4269c0a0e to your computer and use it in GitHub Desktop.
Save JacobDB/9afad6ce3ac079e49186bbb4269c0a0e to your computer and use it in GitHub Desktop.
Compiled modern.js for debugging VS Code debugger https://github.com/Microsoft/vscode-chrome-debug/issues/802
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js":
/*!*****************************************************************!*\
!*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function (e, t) {\n if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else { var o; }\n}(this, function (exports) {\n \"use strict\";\n\n function r(e) {\n if (Array.isArray(e)) {\n for (var t = 0, o = Array(e.length); t < e.length; t++) {\n o[t] = e[t];\n }\n\n return o;\n }\n\n return Array.from(e);\n }\n\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n var l = !1;\n\n if (\"undefined\" != typeof window) {\n var e = {\n get passive() {\n l = !0;\n }\n\n };\n window.addEventListener(\"testPassive\", null, e), window.removeEventListener(\"testPassive\", null, e);\n }\n\n var d = \"undefined\" != typeof window && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform),\n c = [],\n u = !1,\n a = -1,\n s = void 0,\n v = void 0,\n f = function f(t) {\n return c.some(function (e) {\n return !(!e.options.allowTouchMove || !e.options.allowTouchMove(t));\n });\n },\n m = function m(e) {\n var t = e || window.event;\n return !!f(t.target) || 1 < t.touches.length || (t.preventDefault && t.preventDefault(), !1);\n },\n o = function o() {\n setTimeout(function () {\n void 0 !== v && (document.body.style.paddingRight = v, v = void 0), void 0 !== s && (document.body.style.overflow = s, s = void 0);\n });\n };\n\n exports.disableBodyScroll = function (i, e) {\n if (d) {\n if (!i) return void console.error(\"disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.\");\n\n if (i && !c.some(function (e) {\n return e.targetElement === i;\n })) {\n var t = {\n targetElement: i,\n options: e || {}\n };\n c = [].concat(r(c), [t]), i.ontouchstart = function (e) {\n 1 === e.targetTouches.length && (a = e.targetTouches[0].clientY);\n }, i.ontouchmove = function (e) {\n var t, o, n, r;\n 1 === e.targetTouches.length && (o = i, r = (t = e).targetTouches[0].clientY - a, !f(t.target) && (o && 0 === o.scrollTop && 0 < r ? m(t) : (n = o) && n.scrollHeight - n.scrollTop <= n.clientHeight && r < 0 ? m(t) : t.stopPropagation()));\n }, u || (document.addEventListener(\"touchmove\", m, l ? {\n passive: !1\n } : void 0), u = !0);\n }\n } else {\n n = e, setTimeout(function () {\n if (void 0 === v) {\n var e = !!n && !0 === n.reserveScrollBarGap,\n t = window.innerWidth - document.documentElement.clientWidth;\n e && 0 < t && (v = document.body.style.paddingRight, document.body.style.paddingRight = t + \"px\");\n }\n\n void 0 === s && (s = document.body.style.overflow, document.body.style.overflow = \"hidden\");\n });\n var o = {\n targetElement: i,\n options: e || {}\n };\n c = [].concat(r(c), [o]);\n }\n\n var n;\n }, exports.clearAllBodyScrollLocks = function () {\n d ? (c.forEach(function (e) {\n e.targetElement.ontouchstart = null, e.targetElement.ontouchmove = null;\n }), u && (document.removeEventListener(\"touchmove\", m, l ? {\n passive: !1\n } : void 0), u = !1), c = [], a = -1) : (o(), c = []);\n }, exports.enableBodyScroll = function (t) {\n if (d) {\n if (!t) return void console.error(\"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.\");\n t.ontouchstart = null, t.ontouchmove = null, c = c.filter(function (e) {\n return e.targetElement !== t;\n }), u && 0 === c.length && (document.removeEventListener(\"touchmove\", m, l ? {\n passive: !1\n } : void 0), u = !1);\n } else 1 === c.length && c[0].targetElement === t ? (o(), c = []) : c = c.filter(function (e) {\n return e.targetElement !== t;\n });\n };\n});\n\n//# sourceURL=webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js?");
/***/ }),
/***/ "./node_modules/debounce/index.js":
/*!****************************************!*\
!*** ./node_modules/debounce/index.js ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n }\n\n ;\n\n var debounced = function debounced() {\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function () {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n debounced.flush = function () {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n}\n\n; // Adds compatibility for ES modules\n\ndebounce.debounce = debounce;\nmodule.exports = debounce;\n\n//# sourceURL=webpack:///./node_modules/debounce/index.js?");
/***/ }),
/***/ "./node_modules/decouple/index.js":
/*!****************************************!*\
!*** ./node_modules/decouple/index.js ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar requestAnimFrame = function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n}().bind(window);\n\nfunction decouple(node, event, fn) {\n var eve,\n tracking = false;\n\n function captureEvent(e) {\n eve = e;\n track();\n }\n\n function track() {\n if (!tracking) {\n requestAnimFrame(update);\n tracking = true;\n }\n }\n\n function update() {\n fn.call(node, eve);\n tracking = false;\n }\n\n node.addEventListener(event, captureEvent, false);\n return captureEvent;\n}\n/**\n * Expose decouple\n */\n\n\nmodule.exports = decouple;\n\n//# sourceURL=webpack:///./node_modules/decouple/index.js?");
/***/ }),
/***/ "./node_modules/dom7/dist/dom7.modular.js":
/*!************************************************!*\
!*** ./node_modules/dom7/dist/dom7.modular.js ***!
\************************************************/
/*! 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 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"$\", function() { return $; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClass\", function() { return addClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeClass\", function() { return removeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasClass\", function() { return hasClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toggleClass\", function() { return toggleClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attr\", function() { return attr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeAttr\", function() { return removeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prop\", function() { return prop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"data\", function() { return data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeData\", function() { return removeData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataset\", function() { return dataset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"val\", function() { return val; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transition\", function() { return transition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"off\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return once; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trigger\", function() { return trigger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transitionEnd\", function() { return transitionEnd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"animationEnd\", function() { return animationEnd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"width\", function() { return width; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"outerWidth\", function() { return outerWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"height\", function() { return height; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"outerHeight\", function() { return outerHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offset\", function() { return offset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styles\", function() { return styles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return toArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return each; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return filter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"text\", function() { return text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"is\", function() { return is; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return indexOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"index\", function() { return index; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"eq\", function() { return eq; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"append\", function() { return append; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendTo\", function() { return appendTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prepend\", function() { return prepend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prependTo\", function() { return prependTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertBefore\", function() { return insertBefore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertAfter\", function() { return insertAfter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"next\", function() { return next; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextAll\", function() { return nextAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prev\", function() { return prev; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prevAll\", function() { return prevAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"siblings\", function() { return siblings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parent\", function() { return parent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parents\", function() { return parents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closest\", function() { return closest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return find; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"children\", function() { return children; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return remove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detach\", function() { return detach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"empty\", function() { return empty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scrollTo\", function() { return scrollTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scrollTop\", function() { return scrollTop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scrollLeft\", function() { return scrollLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"animate\", function() { return animate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stop\", function() { return stop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"click\", function() { return click; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blur\", function() { return blur; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"focus\", function() { return focus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"focusin\", function() { return focusin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"focusout\", function() { return focusout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyup\", function() { return keyup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keydown\", function() { return keydown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keypress\", function() { return keypress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"submit\", function() { return submit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"change\", function() { return change; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mousedown\", function() { return mousedown; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mousemove\", function() { return mousemove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mouseup\", function() { return mouseup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mouseenter\", function() { return mouseenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mouseleave\", function() { return mouseleave; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mouseout\", function() { return mouseout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mouseover\", function() { return mouseover; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"touchstart\", function() { return touchstart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"touchend\", function() { return touchend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"touchmove\", function() { return touchmove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return resize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scroll\", function() { return scroll; });\n/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ \"./node_modules/ssr-window/dist/ssr-window.esm.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Dom7 2.1.2\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2018, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: September 13, 2018\n */\n\n\nvar Dom7 = function Dom7(arr) {\n _classCallCheck(this, Dom7);\n\n var self = this; // Create array-like object\n\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n\n self.length = arr.length; // Return collection with methods\n\n return this;\n};\n\nfunction $(selector, context) {\n var arr = [];\n var i = 0;\n\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n\n var _html = selector.trim();\n\n if (_html.indexOf('<') >= 0 && _html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (_html.indexOf('<li') === 0) toCreate = 'ul';\n if (_html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (_html.indexOf('<td') === 0 || _html.indexOf('<th') === 0) toCreate = 'tr';\n if (_html.indexOf('<tbody') === 0) toCreate = 'table';\n if (_html.indexOf('<option') === 0) toCreate = 'select';\n tempParent = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].createElement(toCreate);\n tempParent.innerHTML = _html;\n\n for (i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n // Pure ID selector\n els = [ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"]).querySelectorAll(selector.trim());\n }\n\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"] || selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"]) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\n\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n}\n\nfunction requestAnimationFrame(callback) {\n if (ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].requestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].requestAnimationFrame(callback);else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].webkitRequestAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].webkitRequestAnimationFrame(callback);\n return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].setTimeout(callback, 1000 / 60);\n}\n\nfunction cancelAnimationFrame(id) {\n if (ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].cancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].cancelAnimationFrame(id);else if (ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].webkitCancelAnimationFrame) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].webkitCancelAnimationFrame(id);\n return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].clearTimeout(id);\n} // Classes and attributes\n\n\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n\n var classes = className.split(' ');\n\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n\n return this;\n}\n\nfunction removeClass(className) {\n var classes = className.split(' ');\n\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n\n return this;\n}\n\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\n\nfunction toggleClass(className) {\n var classes = className.split(' ');\n\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n\n return this;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n} // eslint-disable-next-line\n\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n} // eslint-disable-next-line\n\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0]; // Get value\n\n if (el) {\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\".concat(key));\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n // eslint-disable-next-line\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n } // eslint-disable-next-line\n\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n var dom = this;\n\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n\n return values;\n }\n\n return dom[0].value;\n }\n\n return undefined;\n }\n\n for (var _i = 0; _i < dom.length; _i += 1) {\n var el = dom[_i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return dom;\n} // Transforms\n// eslint-disable-next-line\n\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = \"\".concat(duration, \"ms\"); // eslint-disable-line\n }\n\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n\n return this;\n} // Events\n\n\nfunction on() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function proxy() {\n for (var _len4 = arguments.length, eventArgs = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n eventArgs[_key4] = arguments[_key4];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, proxy, capture);\n }\n\n return dom.on(eventName, targetSelector, proxy, capture);\n}\n\nfunction trigger() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = void 0;\n\n try {\n evt = new ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n } catch (e) {\n evt = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n } // eslint-disable-next-line\n\n\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var events = ['webkitAnimationEnd', 'animationend'];\n var dom = this;\n var i;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n\n return this;\n} // Sizing/Styles\n\n\nfunction width() {\n if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"]) {\n return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n if (this[0] === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"]) {\n return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n\n var _scrollTop = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].scrollY : el.scrollTop;\n\n var _scrollLeft = el === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"] ? ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].scrollX : el.scrollLeft;\n\n return {\n top: box.top + _scrollTop - clientTop,\n left: box.left + _scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n} // Dom manipulation\n\n\nfunction toArray() {\n var arr = [];\n\n for (var i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n\n return arr;\n} // Iterate over the collection passing elements to `callback`\n\n\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this; // Iterate over the current collection\n\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n } // Return `this` to allow chained DOM operations\n\n\n return this;\n}\n\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this; // Iterate over the current collection\n\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n } // Return `this` to allow chained DOM operations\n\n\n return this;\n}\n\nfunction filter(callback) {\n var matchedItems = [];\n var dom = this;\n\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n\n return new Dom7(matchedItems);\n}\n\nfunction map(callback) {\n var modifiedItems = [];\n var dom = this;\n\n for (var i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n\n return new Dom7(modifiedItems);\n} // eslint-disable-next-line\n\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n} // eslint-disable-next-line\n\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n } else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"];else if (selector === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"]) return el === ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"];\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction indexOf(el) {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n\n return -1;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n} // eslint-disable-next-line\n\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n var returnIndex;\n\n if (index > length - 1) {\n return new Dom7([]);\n }\n\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n\n return new Dom7([this[index]]);\n}\n\nfunction append() {\n var newChild;\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n} // eslint-disable-next-line\n\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"document\"].createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n} // eslint-disable-next-line\n\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n\n return new Dom7([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return new Dom7(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n\n return new Dom7([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return new Dom7([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return new Dom7(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(unique(parents));\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(unique(parents));\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return new Dom7(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return new Dom7(unique(children));\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n\n requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (index, el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (index, el) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = ssr_window__WEBPACK_IMPORTED_MODULE_0__[\"window\"].getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = requestAnimationFrame(render);\n }\n\n a.frameId = requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction eventShortcut(name) {\n for (var _len10 = arguments.length, args = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {\n args[_key10 - 1] = arguments[_key10];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n}\n\nfunction click() {\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n args[_key11] = arguments[_key11];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['click'].concat(args));\n}\n\nfunction blur() {\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n args[_key12] = arguments[_key12];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['blur'].concat(args));\n}\n\nfunction focus() {\n for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n args[_key13] = arguments[_key13];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['focus'].concat(args));\n}\n\nfunction focusin() {\n for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {\n args[_key14] = arguments[_key14];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['focusin'].concat(args));\n}\n\nfunction focusout() {\n for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {\n args[_key15] = arguments[_key15];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['focusout'].concat(args));\n}\n\nfunction keyup() {\n for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {\n args[_key16] = arguments[_key16];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['keyup'].concat(args));\n}\n\nfunction keydown() {\n for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {\n args[_key17] = arguments[_key17];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['keydown'].concat(args));\n}\n\nfunction keypress() {\n for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {\n args[_key18] = arguments[_key18];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['keypress'].concat(args));\n}\n\nfunction submit() {\n for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {\n args[_key19] = arguments[_key19];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['submit'].concat(args));\n}\n\nfunction change() {\n for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {\n args[_key20] = arguments[_key20];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['change'].concat(args));\n}\n\nfunction mousedown() {\n for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {\n args[_key21] = arguments[_key21];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mousedown'].concat(args));\n}\n\nfunction mousemove() {\n for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {\n args[_key22] = arguments[_key22];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mousemove'].concat(args));\n}\n\nfunction mouseup() {\n for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {\n args[_key23] = arguments[_key23];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mouseup'].concat(args));\n}\n\nfunction mouseenter() {\n for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {\n args[_key24] = arguments[_key24];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mouseenter'].concat(args));\n}\n\nfunction mouseleave() {\n for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {\n args[_key25] = arguments[_key25];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mouseleave'].concat(args));\n}\n\nfunction mouseout() {\n for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {\n args[_key26] = arguments[_key26];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mouseout'].concat(args));\n}\n\nfunction mouseover() {\n for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {\n args[_key27] = arguments[_key27];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['mouseover'].concat(args));\n}\n\nfunction touchstart() {\n for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {\n args[_key28] = arguments[_key28];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['touchstart'].concat(args));\n}\n\nfunction touchend() {\n for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {\n args[_key29] = arguments[_key29];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['touchend'].concat(args));\n}\n\nfunction touchmove() {\n for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {\n args[_key30] = arguments[_key30];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['touchmove'].concat(args));\n}\n\nfunction resize() {\n for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {\n args[_key31] = arguments[_key31];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['resize'].concat(args));\n}\n\nfunction scroll() {\n for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {\n args[_key32] = arguments[_key32];\n }\n\n return eventShortcut.bind(this).apply(void 0, ['scroll'].concat(args));\n}\n\n\n\n//# sourceURL=webpack:///./node_modules/dom7/dist/dom7.modular.js?");
/***/ }),
/***/ "./node_modules/es6-object-assign/index.js":
/*!*************************************************!*\
!*** ./node_modules/es6-object-assign/index.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n\n//# sourceURL=webpack:///./node_modules/es6-object-assign/index.js?");
/***/ }),
/***/ "./node_modules/focus-trap/index.js":
/*!******************************************!*\
!*** ./node_modules/focus-trap/index.js ***!
\******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var tabbable = __webpack_require__(/*! tabbable */ \"./node_modules/tabbable/index.js\");\n\nvar xtend = __webpack_require__(/*! xtend */ \"./node_modules/xtend/immutable.js\");\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container = typeof element === 'string' ? doc.querySelector(element) : element;\n var config = xtend({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n }, userOptions);\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n updateTabbableNodes();\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n var onActivate = activateOptions && activateOptions.onActivate ? activateOptions.onActivate : config.onActivate;\n\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n removeListeners();\n state.active = false;\n state.paused = false;\n var onDeactivate = deactivateOptions && deactivateOptions.onDeactivate !== undefined ? deactivateOptions.onDeactivate : config.onDeactivate;\n\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus = deactivateOptions && deactivateOptions.returnFocus !== undefined ? deactivateOptions.returnFocus : config.returnFocusOnDeactivate;\n\n if (returnFocus) {\n delay(function () {\n tryFocus(state.nodeFocusedBeforeActivation);\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return; // There can be only one listening focus trap at a time\n\n if (listeningFocusTrap) {\n listeningFocusTrap.pause();\n }\n\n listeningFocusTrap = trap;\n updateTabbableNodes(); // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n\n delay(function () {\n tryFocus(getInitialFocusNode());\n });\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, true);\n doc.addEventListener('touchstart', checkPointerDown, true);\n doc.addEventListener('click', checkClick, true);\n doc.addEventListener('keydown', checkKey, true);\n return trap;\n }\n\n function removeListeners() {\n if (!state.active || listeningFocusTrap !== trap) return;\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n listeningFocusTrap = null;\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n\n if (!optionValue) {\n return null;\n }\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n\n if (typeof optionValue === 'function') {\n node = optionValue();\n\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\"You can't have a focus-trap without at least one focusable element\");\n }\n\n return node;\n } // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n\n\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n } else {\n e.preventDefault();\n }\n } // In case focus escapes the trap for some strange reason, pull it back in.\n\n\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n } // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n\n\n function checkTab(e) {\n updateTabbableNodes();\n\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus();\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n\n//# sourceURL=webpack:///./node_modules/focus-trap/index.js?");
/***/ }),
/***/ "./node_modules/focus-visible/dist/focus-visible.js":
/*!**********************************************************!*\
!*** ./node_modules/focus-visible/dist/focus-visible.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n})(this, function () {\n 'use strict';\n /**\n * https://github.com/WICG/focus-visible\n */\n\n function init() {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n var inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n\n function isValidFocusTarget(el) {\n if (el && el !== document && el.nodeName !== 'HTML' && el.nodeName !== 'BODY' && 'classList' in el && 'contains' in el.classList) {\n return true;\n }\n\n return false;\n }\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n\n\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName == 'INPUT' && inputTypesWhitelist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName == 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n\n\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n\n\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n /**\n * Treat `keydown` as a signal that the user is in keyboard modality.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {Event} e\n */\n\n\n function onKeyDown(e) {\n if (isValidFocusTarget(document.activeElement)) {\n addFocusVisibleClass(document.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n\n\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n\n\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n\n\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (e.target.classList.contains('focus-visible') || e.target.hasAttribute('data-focus-visible-added')) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n\n\n function onVisibilityChange(e) {\n if (document.visibilityState == 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n\n addInitialPointerMoveListeners();\n }\n }\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n\n\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n\n\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on <html> whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('focus', onFocus, true);\n document.addEventListener('blur', onBlur, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n addInitialPointerMoveListeners();\n document.body.classList.add('js-focus-visible');\n }\n /**\n * Subscription when the DOM is ready\n * @param {Function} callback\n */\n\n\n function onDOMReady(callback) {\n var loaded;\n /**\n * Callback wrapper for check loaded state\n */\n\n function load() {\n if (!loaded) {\n loaded = true;\n callback();\n }\n }\n\n if (['interactive', 'complete'].indexOf(document.readyState) >= 0) {\n callback();\n } else {\n loaded = false;\n document.addEventListener('DOMContentLoaded', load, false);\n window.addEventListener('load', load, false);\n }\n }\n\n if (typeof document !== 'undefined') {\n onDOMReady(init);\n }\n});\n\n//# sourceURL=webpack:///./node_modules/focus-visible/dist/focus-visible.js?");
/***/ }),
/***/ "./node_modules/in-vp/index.js":
/*!*************************************!*\
!*** ./node_modules/in-vp/index.js ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("'use_strict';\n\nmodule.exports = function (elem) {\n var treshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n treshold = Object.assign({\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }, treshold); // Get the viewport dimensions\n\n var vp = {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight\n }; // Get the viewport offset and size of the element.\n // Normailze right and bottom to show offset from their\n // respective edges istead of the top-left edges.\n\n var box = elem.getBoundingClientRect();\n var top = box.top,\n left = box.left,\n width = box.width,\n height = box.height;\n var right = vp.width - box.right;\n var bottom = vp.height - box.bottom; // Calculate which sides of the element are cut-off\n // by the viewport.\n\n var cutOff = {\n top: top < treshold.top,\n left: left < treshold.left,\n bottom: bottom < treshold.bottom,\n right: right < treshold.right\n }; // Calculate which sides of the element are partially shown\n\n var partial = {\n top: cutOff.top && top > -height + treshold.top,\n left: cutOff.left && left > -width + treshold.left,\n bottom: cutOff.bottom && bottom > -height + treshold.bottom,\n right: cutOff.right && right > -width + treshold.right\n };\n var isFullyVisible = top >= treshold.top && right >= treshold.right && bottom >= treshold.bottom && left >= treshold.left;\n var isPartiallyVisible = partial.top || partial.right || partial.bottom || partial.left; // Calculate which edge of the element are visible.\n // Every edge can have three states:\n // - 'fully': The edge is completely visible.\n // - 'partially': Some part of the edge can be seen.\n // - false: The edge is not visible at all.\n\n var edges = {\n top: !isFullyVisible && !isPartiallyVisible ? false : !cutOff.top && !cutOff.left && !cutOff.right && 'fully' || !cutOff.top && 'partially' || false,\n right: !isFullyVisible && !isPartiallyVisible ? false : !cutOff.right && !cutOff.top && !cutOff.bottom && 'fully' || !cutOff.right && 'partially' || false,\n bottom: !isFullyVisible && !isPartiallyVisible ? false : !cutOff.bottom && !cutOff.left && !cutOff.right && 'fully' || !cutOff.bottom && 'partially' || false,\n left: !isFullyVisible && !isPartiallyVisible ? false : !cutOff.left && !cutOff.top && !cutOff.bottom && 'fully' || !cutOff.left && 'partially' || false\n };\n return {\n fully: isFullyVisible,\n partially: isPartiallyVisible,\n edges: edges\n };\n};\n\n//# sourceURL=webpack:///./node_modules/in-vp/index.js?");
/***/ }),
/***/ "./node_modules/jvent/index.js":
/*!*************************************!*\
!*** ./node_modules/jvent/index.js ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction Jvent() {}\n/**\n * Adds a listener to the collection for a specified event.\n * @public\n * @function\n * @name Jvent#on\n * @param {string} event Event name.\n * @param {function} listener Listener function.\n * @example\n * // Will add a event listener to the \"ready\" event\n * var startDoingStuff = function (event, param1, param2, ...) {\n * // Some code here!\n * };\n *\n * me.on(\"ready\", startDoingStuff);\n */\n\n\nJvent.prototype.on = function (event, listener) {\n this._collection = this._collection || {};\n this._collection[event] = this._collection[event] || [];\n\n this._collection[event].push(listener);\n\n return this;\n};\n/**\n * Adds a one time listener to the collection for a specified event. It will execute only once.\n * @public\n * @function\n * @name Jvent#once\n * @param {string} event Event name.\n * @param {function} listener Listener function.\n * @returns itself\n * @example\n * // Will add a event handler to the \"contentLoad\" event once\n * me.once(\"contentLoad\", startDoingStuff);\n */\n\n\nJvent.prototype.once = function (event, listener) {\n var that = this;\n\n function fn() {\n that.off(event, fn);\n listener.apply(this, arguments);\n }\n\n fn.listener = listener;\n this.on(event, fn);\n return this;\n};\n/**\n * Removes a listener from the collection for a specified event.\n * @public\n * @function\n * @name Jvent#off\n * @param {string} event Event name.\n * @param {function} listener Listener function.\n * @returns itself\n * @example\n * // Will remove event handler to the \"ready\" event\n * var startDoingStuff = function () {\n * // Some code here!\n * };\n *\n * me.off(\"ready\", startDoingStuff);\n */\n\n\nJvent.prototype.off = function (event, listener) {\n var listeners = this._collection && this._collection[event],\n j = 0;\n\n if (listeners !== undefined) {\n for (j; j < listeners.length; j += 1) {\n if (listeners[j] === listener || listeners[j].listener === listener) {\n listeners.splice(j, 1);\n break;\n }\n }\n\n if (listeners.length === 0) {\n this.removeAllListeners(event);\n }\n }\n\n return this;\n};\n/**\n * Removes all listeners from the collection for a specified event.\n * @public\n * @function\n * @name Jvent#removeAllListeners\n * @param {string} event Event name.\n * @returns itself\n * @example\n * me.removeAllListeners(\"ready\");\n */\n\n\nJvent.prototype.removeAllListeners = function (event) {\n this._collection = this._collection || {};\n delete this._collection[event];\n return this;\n};\n/**\n * Returns all listeners from the collection for a specified event.\n * @public\n * @function\n * @name Jvent#listeners\n * @param {string} event Event name.\n * @returns Array\n * @example\n * me.listeners(\"ready\");\n */\n\n\nJvent.prototype.listeners = function (event) {\n this._collection = this._collection || {};\n return this._collection[event];\n};\n/**\n * Execute each item in the listener collection in order with the specified data.\n * @name Jvent#emit\n * @public\n * @protected\n * @param {string} event The name of the event you want to emit.\n * @param {...object} var_args Data to pass to the listeners.\n * @example\n * // Will emit the \"ready\" event with \"param1\" and \"param2\" as arguments.\n * me.emit(\"ready\", \"param1\", \"param2\");\n */\n\n\nJvent.prototype.emit = function () {\n if (this._collection === undefined) {\n return this;\n }\n\n var args = [].slice.call(arguments, 0),\n // converted to array\n event = args.shift(),\n listeners = this._collection[event],\n i = 0,\n len;\n\n if (listeners) {\n listeners = listeners.slice(0);\n len = listeners.length;\n\n for (i; i < len; i += 1) {\n listeners[i].apply(this, args);\n }\n }\n\n return this;\n};\n/**\n * Expose Jvent\n */\n\n\nmodule.exports = Jvent;\n\n//# sourceURL=webpack:///./node_modules/jvent/index.js?");
/***/ }),
/***/ "./node_modules/layzr.js/dist/layzr.module.js":
/*!****************************************************!*\
!*** ./node_modules/layzr.js/dist/layzr.module.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar knot = function knot() {\n var extended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var events = Object.create(null);\n\n function on(name, handler) {\n events[name] = events[name] || [];\n events[name].push(handler);\n return this;\n }\n\n function once(name, handler) {\n handler._once = true;\n on(name, handler);\n return this;\n }\n\n function off(name) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n handler ? events[name].splice(events[name].indexOf(handler), 1) : delete events[name];\n return this;\n }\n\n function emit(name) {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n } // cache the events, to avoid consequences of mutation\n\n\n var cache = events[name] && events[name].slice(); // only fire handlers if they exist\n\n cache && cache.forEach(function (handler) {\n // remove handlers added with 'once'\n handler._once && off(name, handler); // set 'this' context, pass args to handlers\n\n handler.apply(_this, args);\n });\n return this;\n }\n\n return _extends({}, extended, {\n on: on,\n once: once,\n off: off,\n emit: emit\n });\n};\n\nvar layzr = function layzr() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // private\n\n var prevLoc = getLoc();\n var ticking = void 0;\n var nodes = void 0;\n var windowHeight = void 0; // options\n\n var settings = {\n normal: options.normal || 'data-normal',\n retina: options.retina || 'data-retina',\n srcset: options.srcset || 'data-srcset',\n threshold: options.threshold || 0\n }; // feature detection\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/srcset.js\n\n var srcset = document.body.classList.contains('srcset') || 'srcset' in document.createElement('img'); // device pixel ratio\n // not supported in IE10 - https://msdn.microsoft.com/en-us/library/dn265030(v=vs.85).aspx\n\n var dpr = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI; // instance\n\n var instance = knot({\n handlers: handlers,\n check: check,\n update: update\n });\n return instance; // location helper\n\n function getLoc() {\n return window.scrollY || window.pageYOffset;\n } // debounce helpers\n\n\n function requestScroll() {\n prevLoc = getLoc();\n requestFrame();\n }\n\n function requestFrame() {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n return check();\n });\n ticking = true;\n }\n } // offset helper\n\n\n function getOffset(node) {\n return node.getBoundingClientRect().top + prevLoc;\n } // in viewport helper\n\n\n function inViewport(node) {\n var viewTop = prevLoc;\n var viewBot = viewTop + windowHeight;\n var nodeTop = getOffset(node);\n var nodeBot = nodeTop + node.offsetHeight;\n var offset = settings.threshold / 100 * windowHeight;\n return nodeBot >= viewTop - offset && nodeTop <= viewBot + offset;\n } // source helper\n\n\n function setSource(node) {\n instance.emit('src:before', node); // prefer srcset, fallback to pixel density\n\n if (srcset && node.hasAttribute(settings.srcset)) {\n node.setAttribute('srcset', node.getAttribute(settings.srcset));\n } else {\n var retina = dpr > 1 && node.getAttribute(settings.retina);\n node.setAttribute('src', retina || node.getAttribute(settings.normal));\n }\n\n instance.emit('src:after', node);\n [settings.normal, settings.retina, settings.srcset].forEach(function (attr) {\n return node.removeAttribute(attr);\n });\n update();\n } // API\n\n\n function handlers(flag) {\n var action = flag ? 'addEventListener' : 'removeEventListener';\n ['scroll', 'resize'].forEach(function (event) {\n return window[action](event, requestScroll);\n });\n return this;\n }\n\n function check() {\n windowHeight = window.innerHeight;\n nodes.forEach(function (node) {\n return inViewport(node) && setSource(node);\n });\n ticking = false;\n return this;\n }\n\n function update() {\n nodes = Array.prototype.slice.call(document.querySelectorAll('[' + settings.normal + ']'));\n return this;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (layzr);\n\n//# sourceURL=webpack:///./node_modules/layzr.js/dist/layzr.module.js?");
/***/ }),
/***/ "./node_modules/noty/lib/noty.js":
/*!***************************************!*\
!*** ./node_modules/noty/lib/noty.js ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/* \r\n @package NOTY - Dependency-free notification library \r\n @version version: 3.1.4 \r\n @contributors https://github.com/needim/noty/graphs/contributors \r\n @documentation Examples and Documentation - http://needim.github.com/noty \r\n @license Licensed under the MIT licenses: http://www.opensource.org/licenses/mit-license.php \r\n*/\n(function webpackUniversalModuleDefinition(root, factory) {\n if (( false ? undefined : _typeof2(exports)) === 'object' && ( false ? undefined : _typeof2(module)) === 'object') module.exports = factory();else if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}\n})(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // identity function for calling harmony imports with the correct context\n\n /******/\n\n __webpack_require__.i = function (value) {\n return value;\n };\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 6);\n /******/\n }(\n /************************************************************************/\n\n /******/\n [\n /* 0 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.css = exports.deepExtend = exports.animationEndEvents = undefined;\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n exports.inArray = inArray;\n exports.stopPropagation = stopPropagation;\n exports.generateID = generateID;\n exports.outerHeight = outerHeight;\n exports.addListener = addListener;\n exports.hasClass = hasClass;\n exports.addClass = addClass;\n exports.removeClass = removeClass;\n exports.remove = remove;\n exports.classList = classList;\n exports.visibilityChangeFlow = visibilityChangeFlow;\n exports.createAudioElements = createAudioElements;\n\n var _api = __webpack_require__(1);\n\n var API = _interopRequireWildcard(_api);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n var animationEndEvents = exports.animationEndEvents = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\n function inArray(needle, haystack, argStrict) {\n var key = void 0;\n var strict = !!argStrict;\n\n if (strict) {\n for (key in haystack) {\n if (haystack.hasOwnProperty(key) && haystack[key] === needle) {\n return true;\n }\n }\n } else {\n for (key in haystack) {\n if (haystack.hasOwnProperty(key) && haystack[key] === needle) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function stopPropagation(evt) {\n evt = evt || window.event;\n\n if (typeof evt.stopPropagation !== 'undefined') {\n evt.stopPropagation();\n } else {\n evt.cancelBubble = true;\n }\n }\n\n var deepExtend = exports.deepExtend = function deepExtend(out) {\n out = out || {};\n\n for (var i = 1; i < arguments.length; i++) {\n var obj = arguments[i];\n if (!obj) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (Array.isArray(obj[key])) {\n out[key] = obj[key];\n } else if (_typeof(obj[key]) === 'object' && obj[key] !== null) {\n out[key] = deepExtend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n\n return out;\n };\n\n function generateID() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var id = 'noty_' + prefix + '_';\n id += 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n return id;\n }\n\n function outerHeight(el) {\n var height = el.offsetHeight;\n var style = window.getComputedStyle(el);\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\n return height;\n }\n\n var css = exports.css = function () {\n var cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'];\n var cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function (match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n var i = cssPrefixes.length;\n var capName = name.charAt(0).toUpperCase() + name.slice(1);\n var vendorName = void 0;\n\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function (element, properties) {\n var args = arguments;\n var prop = void 0;\n var value = void 0;\n\n if (args.length === 2) {\n for (prop in properties) {\n if (properties.hasOwnProperty(prop)) {\n value = properties[prop];\n\n if (value !== undefined && properties.hasOwnProperty(prop)) {\n applyCss(element, prop, value);\n }\n }\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n };\n }();\n\n function addListener(el, events, cb) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n events = events.split(' ');\n\n for (var i = 0; i < events.length; i++) {\n if (document.addEventListener) {\n el.addEventListener(events[i], cb, useCapture);\n } else if (document.attachEvent) {\n el.attachEvent('on' + events[i], cb);\n }\n }\n }\n\n function hasClass(element, name) {\n var list = typeof element === 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n function addClass(element, name) {\n var oldList = classList(element);\n var newList = oldList + name;\n if (hasClass(oldList, name)) return; // Trim the opening space.\n\n element.className = newList.substring(1);\n }\n\n function removeClass(element, name) {\n var oldList = classList(element);\n var newList = void 0;\n if (!hasClass(element, name)) return; // Replace the class name.\n\n newList = oldList.replace(' ' + name + ' ', ' '); // Trim the opening and closing spaces.\n\n element.className = newList.substring(1, newList.length - 1);\n }\n\n function remove(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n\n function classList(element) {\n return (' ' + (element && element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n function visibilityChangeFlow() {\n var hidden = void 0;\n var visibilityChange = void 0;\n\n if (typeof document.hidden !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden';\n visibilityChange = 'visibilitychange';\n } else if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden';\n visibilityChange = 'msvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden';\n visibilityChange = 'webkitvisibilitychange';\n }\n\n function onVisibilityChange() {\n API.PageHidden = document[hidden];\n handleVisibilityChange();\n }\n\n function onBlur() {\n API.PageHidden = true;\n handleVisibilityChange();\n }\n\n function onFocus() {\n API.PageHidden = false;\n handleVisibilityChange();\n }\n\n function handleVisibilityChange() {\n if (API.PageHidden) stopAll();else resumeAll();\n }\n\n function stopAll() {\n setTimeout(function () {\n Object.keys(API.Store).forEach(function (id) {\n if (API.Store.hasOwnProperty(id)) {\n if (API.Store[id].options.visibilityControl) {\n API.Store[id].stop();\n }\n }\n });\n }, 100);\n }\n\n function resumeAll() {\n setTimeout(function () {\n Object.keys(API.Store).forEach(function (id) {\n if (API.Store.hasOwnProperty(id)) {\n if (API.Store[id].options.visibilityControl) {\n API.Store[id].resume();\n }\n }\n });\n API.queueRenderAll();\n }, 100);\n }\n\n if (visibilityChange) {\n addListener(document, visibilityChange, onVisibilityChange);\n }\n\n addListener(window, 'blur', onBlur);\n addListener(window, 'focus', onFocus);\n }\n\n function createAudioElements(ref) {\n if (ref.hasSound) {\n var audioElement = document.createElement('audio');\n ref.options.sounds.sources.forEach(function (s) {\n var source = document.createElement('source');\n source.src = s;\n source.type = 'audio/' + getExtension(s);\n audioElement.appendChild(source);\n });\n\n if (ref.barDom) {\n ref.barDom.appendChild(audioElement);\n } else {\n document.querySelector('body').appendChild(audioElement);\n }\n\n audioElement.volume = ref.options.sounds.volume;\n\n if (!ref.soundPlayed) {\n audioElement.play();\n ref.soundPlayed = true;\n }\n\n audioElement.onended = function () {\n remove(audioElement);\n };\n }\n }\n\n function getExtension(fileName) {\n return fileName.match(/\\.([^.]+)$/)[1];\n }\n /***/\n\n },\n /* 1 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Defaults = exports.Store = exports.Queues = exports.DefaultMaxVisible = exports.docTitle = exports.DocModalCount = exports.PageHidden = undefined;\n exports.getQueueCounts = getQueueCounts;\n exports.addToQueue = addToQueue;\n exports.removeFromQueue = removeFromQueue;\n exports.queueRender = queueRender;\n exports.queueRenderAll = queueRenderAll;\n exports.ghostFix = ghostFix;\n exports.build = build;\n exports.hasButtons = hasButtons;\n exports.handleModal = handleModal;\n exports.handleModalClose = handleModalClose;\n exports.queueClose = queueClose;\n exports.dequeueClose = dequeueClose;\n exports.fire = fire;\n exports.openFlow = openFlow;\n exports.closeFlow = closeFlow;\n\n var _utils = __webpack_require__(0);\n\n var Utils = _interopRequireWildcard(_utils);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n var PageHidden = exports.PageHidden = false;\n var DocModalCount = exports.DocModalCount = 0;\n var DocTitleProps = {\n originalTitle: null,\n count: 0,\n changed: false,\n timer: -1\n };\n var docTitle = exports.docTitle = {\n increment: function increment() {\n DocTitleProps.count++;\n\n docTitle._update();\n },\n decrement: function decrement() {\n DocTitleProps.count--;\n\n if (DocTitleProps.count <= 0) {\n docTitle._clear();\n\n return;\n }\n\n docTitle._update();\n },\n _update: function _update() {\n var title = document.title;\n\n if (!DocTitleProps.changed) {\n DocTitleProps.originalTitle = title;\n document.title = '(' + DocTitleProps.count + ') ' + title;\n DocTitleProps.changed = true;\n } else {\n document.title = '(' + DocTitleProps.count + ') ' + DocTitleProps.originalTitle;\n }\n },\n _clear: function _clear() {\n if (DocTitleProps.changed) {\n DocTitleProps.count = 0;\n document.title = DocTitleProps.originalTitle;\n DocTitleProps.changed = false;\n }\n }\n };\n var DefaultMaxVisible = exports.DefaultMaxVisible = 5;\n var Queues = exports.Queues = {\n global: {\n maxVisible: DefaultMaxVisible,\n queue: []\n }\n };\n var Store = exports.Store = {};\n var Defaults = exports.Defaults = {\n type: 'alert',\n layout: 'topRight',\n theme: 'mint',\n text: '',\n timeout: false,\n progressBar: true,\n closeWith: ['click'],\n animation: {\n open: 'noty_effects_open',\n close: 'noty_effects_close'\n },\n id: false,\n force: false,\n killer: false,\n queue: 'global',\n container: false,\n buttons: [],\n callbacks: {\n beforeShow: null,\n onShow: null,\n afterShow: null,\n onClose: null,\n afterClose: null,\n onClick: null,\n onHover: null,\n onTemplate: null\n },\n sounds: {\n sources: [],\n volume: 1,\n conditions: []\n },\n titleCount: {\n conditions: []\n },\n modal: false,\n visibilityControl: false\n /**\r\n * @param {string} queueName\r\n * @return {object}\r\n */\n\n };\n\n function getQueueCounts() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global';\n var count = 0;\n var max = DefaultMaxVisible;\n\n if (Queues.hasOwnProperty(queueName)) {\n max = Queues[queueName].maxVisible;\n Object.keys(Store).forEach(function (i) {\n if (Store[i].options.queue === queueName && !Store[i].closed) count++;\n });\n }\n\n return {\n current: count,\n maxVisible: max\n };\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function addToQueue(ref) {\n if (!Queues.hasOwnProperty(ref.options.queue)) {\n Queues[ref.options.queue] = {\n maxVisible: DefaultMaxVisible,\n queue: []\n };\n }\n\n Queues[ref.options.queue].queue.push(ref);\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function removeFromQueue(ref) {\n if (Queues.hasOwnProperty(ref.options.queue)) {\n var queue = [];\n Object.keys(Queues[ref.options.queue].queue).forEach(function (i) {\n if (Queues[ref.options.queue].queue[i].id !== ref.id) {\n queue.push(Queues[ref.options.queue].queue[i]);\n }\n });\n Queues[ref.options.queue].queue = queue;\n }\n }\n /**\r\n * @param {string} queueName\r\n * @return {void}\r\n */\n\n\n function queueRender() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global';\n\n if (Queues.hasOwnProperty(queueName)) {\n var noty = Queues[queueName].queue.shift();\n if (noty) noty.show();\n }\n }\n /**\r\n * @return {void}\r\n */\n\n\n function queueRenderAll() {\n Object.keys(Queues).forEach(function (queueName) {\n queueRender(queueName);\n });\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function ghostFix(ref) {\n var ghostID = Utils.generateID('ghost');\n var ghost = document.createElement('div');\n ghost.setAttribute('id', ghostID);\n Utils.css(ghost, {\n height: Utils.outerHeight(ref.barDom) + 'px'\n });\n ref.barDom.insertAdjacentHTML('afterend', ghost.outerHTML);\n Utils.remove(ref.barDom);\n ghost = document.getElementById(ghostID);\n Utils.addClass(ghost, 'noty_fix_effects_height');\n Utils.addListener(ghost, Utils.animationEndEvents, function () {\n Utils.remove(ghost);\n });\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function build(ref) {\n findOrCreateContainer(ref);\n var markup = '<div class=\"noty_body\">' + ref.options.text + '</div>' + buildButtons(ref) + '<div class=\"noty_progressbar\"></div>';\n ref.barDom = document.createElement('div');\n ref.barDom.setAttribute('id', ref.id);\n Utils.addClass(ref.barDom, 'noty_bar noty_type__' + ref.options.type + ' noty_theme__' + ref.options.theme);\n ref.barDom.innerHTML = markup;\n fire(ref, 'onTemplate');\n }\n /**\r\n * @param {Noty} ref\r\n * @return {boolean}\r\n */\n\n\n function hasButtons(ref) {\n return !!(ref.options.buttons && Object.keys(ref.options.buttons).length);\n }\n /**\r\n * @param {Noty} ref\r\n * @return {string}\r\n */\n\n\n function buildButtons(ref) {\n if (hasButtons(ref)) {\n var buttons = document.createElement('div');\n Utils.addClass(buttons, 'noty_buttons');\n Object.keys(ref.options.buttons).forEach(function (key) {\n buttons.appendChild(ref.options.buttons[key].dom);\n });\n ref.options.buttons.forEach(function (btn) {\n buttons.appendChild(btn.dom);\n });\n return buttons.outerHTML;\n }\n\n return '';\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function handleModal(ref) {\n if (ref.options.modal) {\n if (DocModalCount === 0) {\n createModal(ref);\n }\n\n exports.DocModalCount = DocModalCount += 1;\n }\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function handleModalClose(ref) {\n if (ref.options.modal && DocModalCount > 0) {\n exports.DocModalCount = DocModalCount -= 1;\n\n if (DocModalCount <= 0) {\n var modal = document.querySelector('.noty_modal');\n\n if (modal) {\n Utils.removeClass(modal, 'noty_modal_open');\n Utils.addClass(modal, 'noty_modal_close');\n Utils.addListener(modal, Utils.animationEndEvents, function () {\n Utils.remove(modal);\n });\n }\n }\n }\n }\n /**\r\n * @return {void}\r\n */\n\n\n function createModal() {\n var body = document.querySelector('body');\n var modal = document.createElement('div');\n Utils.addClass(modal, 'noty_modal');\n body.insertBefore(modal, body.firstChild);\n Utils.addClass(modal, 'noty_modal_open');\n Utils.addListener(modal, Utils.animationEndEvents, function () {\n Utils.removeClass(modal, 'noty_modal_open');\n });\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function findOrCreateContainer(ref) {\n if (ref.options.container) {\n ref.layoutDom = document.querySelector(ref.options.container);\n return;\n }\n\n var layoutID = 'noty_layout__' + ref.options.layout;\n ref.layoutDom = document.querySelector('div#' + layoutID);\n\n if (!ref.layoutDom) {\n ref.layoutDom = document.createElement('div');\n ref.layoutDom.setAttribute('id', layoutID);\n ref.layoutDom.setAttribute('role', 'alert');\n ref.layoutDom.setAttribute('aria-live', 'polite');\n Utils.addClass(ref.layoutDom, 'noty_layout');\n document.querySelector('body').appendChild(ref.layoutDom);\n }\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function queueClose(ref) {\n if (ref.options.timeout) {\n if (ref.options.progressBar && ref.progressDom) {\n Utils.css(ref.progressDom, {\n transition: 'width ' + ref.options.timeout + 'ms linear',\n width: '0%'\n });\n }\n\n clearTimeout(ref.closeTimer);\n ref.closeTimer = setTimeout(function () {\n ref.close();\n }, ref.options.timeout);\n }\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function dequeueClose(ref) {\n if (ref.options.timeout && ref.closeTimer) {\n clearTimeout(ref.closeTimer);\n ref.closeTimer = -1;\n\n if (ref.options.progressBar && ref.progressDom) {\n Utils.css(ref.progressDom, {\n transition: 'width 0ms linear',\n width: '100%'\n });\n }\n }\n }\n /**\r\n * @param {Noty} ref\r\n * @param {string} eventName\r\n * @return {void}\r\n */\n\n\n function fire(ref, eventName) {\n if (ref.listeners.hasOwnProperty(eventName)) {\n ref.listeners[eventName].forEach(function (cb) {\n if (typeof cb === 'function') {\n cb.apply(ref);\n }\n });\n }\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function openFlow(ref) {\n fire(ref, 'afterShow');\n queueClose(ref);\n Utils.addListener(ref.barDom, 'mouseenter', function () {\n dequeueClose(ref);\n });\n Utils.addListener(ref.barDom, 'mouseleave', function () {\n queueClose(ref);\n });\n }\n /**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\n\n\n function closeFlow(ref) {\n delete Store[ref.id];\n ref.closing = false;\n fire(ref, 'afterClose');\n Utils.remove(ref.barDom);\n\n if (ref.layoutDom.querySelectorAll('.noty_bar').length === 0 && !ref.options.container) {\n Utils.remove(ref.layoutDom);\n }\n\n if (Utils.inArray('docVisible', ref.options.titleCount.conditions) || Utils.inArray('docHidden', ref.options.titleCount.conditions)) {\n docTitle.decrement();\n }\n\n queueRender(ref.options.queue);\n }\n /***/\n\n },\n /* 2 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.NotyButton = undefined;\n\n var _utils = __webpack_require__(0);\n\n var Utils = _interopRequireWildcard(_utils);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var NotyButton = exports.NotyButton = function NotyButton(html, classes, cb) {\n var _this = this;\n\n var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, NotyButton);\n\n this.dom = document.createElement('button');\n this.dom.innerHTML = html;\n this.id = attributes.id = attributes.id || Utils.generateID('button');\n this.cb = cb;\n Object.keys(attributes).forEach(function (propertyName) {\n _this.dom.setAttribute(propertyName, attributes[propertyName]);\n });\n Utils.addClass(this.dom, classes || 'noty_btn');\n return this;\n };\n /***/\n\n },\n /* 3 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Push = exports.Push = function () {\n function Push() {\n var workerPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/service-worker.js';\n\n _classCallCheck(this, Push);\n\n this.subData = {};\n this.workerPath = workerPath;\n this.listeners = {\n onPermissionGranted: [],\n onPermissionDenied: [],\n onSubscriptionSuccess: [],\n onSubscriptionCancel: [],\n onWorkerError: [],\n onWorkerSuccess: [],\n onWorkerNotSupported: []\n };\n return this;\n }\n /**\r\n * @param {string} eventName\r\n * @param {function} cb\r\n * @return {Push}\r\n */\n\n\n _createClass(Push, [{\n key: 'on',\n value: function on(eventName) {\n var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n if (typeof cb === 'function' && this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].push(cb);\n }\n\n return this;\n }\n }, {\n key: 'fire',\n value: function fire(eventName) {\n var _this = this;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].forEach(function (cb) {\n if (typeof cb === 'function') {\n cb.apply(_this, params);\n }\n });\n }\n }\n }, {\n key: 'create',\n value: function create() {\n console.log('NOT IMPLEMENTED YET');\n }\n /**\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isSupported',\n value: function isSupported() {\n var result = false;\n\n try {\n result = window.Notification || window.webkitNotifications || navigator.mozNotification || window.external && window.external.msIsSiteMode() !== undefined;\n } catch (e) {}\n\n return result;\n }\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'getPermissionStatus',\n value: function getPermissionStatus() {\n var perm = 'default';\n\n if (window.Notification && window.Notification.permissionLevel) {\n perm = window.Notification.permissionLevel;\n } else if (window.webkitNotifications && window.webkitNotifications.checkPermission) {\n switch (window.webkitNotifications.checkPermission()) {\n case 1:\n perm = 'default';\n break;\n\n case 0:\n perm = 'granted';\n break;\n\n default:\n perm = 'denied';\n }\n } else if (window.Notification && window.Notification.permission) {\n perm = window.Notification.permission;\n } else if (navigator.mozNotification) {\n perm = 'granted';\n } else if (window.external && window.external.msIsSiteMode() !== undefined) {\n perm = window.external.msIsSiteMode() ? 'granted' : 'default';\n }\n\n return perm.toString().toLowerCase();\n }\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'getEndpoint',\n value: function getEndpoint(subscription) {\n var endpoint = subscription.endpoint;\n var subscriptionId = subscription.subscriptionId; // fix for Chrome < 45\n\n if (subscriptionId && endpoint.indexOf(subscriptionId) === -1) {\n endpoint += '/' + subscriptionId;\n }\n\n return endpoint;\n }\n /**\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isSWRegistered',\n value: function isSWRegistered() {\n try {\n return navigator.serviceWorker.controller.state === 'activated';\n } catch (e) {\n return false;\n }\n }\n /**\r\n * @return {void}\r\n */\n\n }, {\n key: 'unregisterWorker',\n value: function unregisterWorker() {\n var self = this;\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then(function (registrations) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = registrations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var registration = _step.value;\n registration.unregister();\n self.fire('onSubscriptionCancel');\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }\n }\n /**\r\n * @return {void}\r\n */\n\n }, {\n key: 'requestSubscription',\n value: function requestSubscription() {\n var _this2 = this;\n\n var userVisibleOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var self = this;\n var current = this.getPermissionStatus();\n\n var cb = function cb(result) {\n if (result === 'granted') {\n _this2.fire('onPermissionGranted');\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.register(_this2.workerPath).then(function () {\n navigator.serviceWorker.ready.then(function (serviceWorkerRegistration) {\n self.fire('onWorkerSuccess');\n serviceWorkerRegistration.pushManager.subscribe({\n userVisibleOnly: userVisibleOnly\n }).then(function (subscription) {\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n self.subData = {\n endpoint: self.getEndpoint(subscription),\n p256dh: key ? window.btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n auth: token ? window.btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null\n };\n self.fire('onSubscriptionSuccess', [self.subData]);\n }).catch(function (err) {\n self.fire('onWorkerError', [err]);\n });\n });\n });\n } else {\n self.fire('onWorkerNotSupported');\n }\n } else if (result === 'denied') {\n _this2.fire('onPermissionDenied');\n\n _this2.unregisterWorker();\n }\n };\n\n if (current === 'default') {\n if (window.Notification && window.Notification.requestPermission) {\n window.Notification.requestPermission(cb);\n } else if (window.webkitNotifications && window.webkitNotifications.checkPermission) {\n window.webkitNotifications.requestPermission(cb);\n }\n } else {\n cb(current);\n }\n }\n }]);\n\n return Push;\n }();\n /***/\n\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */\n (function (process, global) {\n var require;\n /*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n\n (function (global, factory) {\n true ? module.exports = factory() : undefined;\n })(this, function () {\n 'use strict';\n\n function objectOrFunction(x) {\n var type = _typeof2(x);\n\n return x !== null && (type === 'object' || type === 'function');\n }\n\n function isFunction(x) {\n return typeof x === 'function';\n }\n\n var _isArray = undefined;\n\n if (Array.isArray) {\n _isArray = Array.isArray;\n } else {\n _isArray = function _isArray(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n }\n\n var isArray = _isArray;\n var len = 0;\n var vertxNext = undefined;\n var customSchedulerFn = undefined;\n\n var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n };\n\n function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n }\n\n function setAsap(asapFn) {\n asap = asapFn;\n }\n\n var browserWindow = typeof window !== 'undefined' ? window : undefined;\n var browserGlobal = browserWindow || {};\n var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; // test for web worker but not in IE10\n\n var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; // node\n\n function useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n } // vertx\n\n\n function useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n }\n\n function useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n } // web worker\n\n\n function useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n }\n\n function useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n }\n\n var queue = new Array(1000);\n\n function flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n callback(arg);\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n }\n\n function attemptVertx() {\n try {\n var r = require;\n\n var vertx = __webpack_require__(9);\n\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n }\n\n var scheduleFlush = undefined; // Decide what async method to use to triggering processing of queued callbacks:\n\n if (isNode) {\n scheduleFlush = useNextTick();\n } else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n } else if (isWorker) {\n scheduleFlush = useMessageChannel();\n } else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n } else {\n scheduleFlush = useSetTimeout();\n }\n\n function then(onFulfillment, onRejection) {\n var _arguments = arguments;\n var parent = this;\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n /**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.resolve(1);\n \n promise.then(function(value){\n // value === 1\n });\n ```\n \n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n */\n\n\n function resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && _typeof2(object) === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n }\n\n var PROMISE_ID = Math.random().toString(36).substring(16);\n\n function noop() {}\n\n var PENDING = void 0;\n var FULFILLED = 1;\n var REJECTED = 2;\n var GET_THEN_ERROR = new ErrorObject();\n\n function selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n }\n\n function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n\n function handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n\n sealed = true;\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n }\n\n function handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n }\n\n function handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n }\n\n function resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n }\n\n function publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n }\n\n function fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n }\n\n function reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._state = REJECTED;\n promise._result = reason;\n asap(publishRejection, promise);\n }\n\n function subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n parent._onerror = null;\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n }\n\n function publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function ErrorObject() {\n this.error = null;\n }\n\n var TRY_CATCH_ERROR = new ErrorObject();\n\n function tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n }\n\n function invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {// noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n\n function initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n }\n\n var id = 0;\n\n function nextId() {\n return id++;\n }\n\n function makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n }\n\n function Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n\n this._enumerate(input);\n\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n function validationError() {\n return new Error('Array Methods must be provided an Array');\n }\n\n Enumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n /**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n \n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n \n Example:\n \n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n \n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n \n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n */\n\n\n function all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n }\n /**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n \n Example:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n \n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n \n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n \n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n \n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n \n An example real-world use case is implementing timeouts:\n \n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n \n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n */\n\n\n function race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n }\n /**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n \n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n Instead of writing the above, your code now simply becomes the following:\n \n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n \n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n \n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n */\n\n\n function reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n }\n\n function needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n \n Terminology\n -----------\n \n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n \n A promise can be in one of three states: pending, fulfilled, or rejected.\n \n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n \n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n \n \n Basic Usage:\n ------------\n \n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n \n // on failure\n reject(reason);\n });\n \n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Advanced Usage:\n ---------------\n \n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n \n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n \n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n \n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n \n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n \n Unlike callbacks, promises are great composable primitives.\n \n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n \n return values;\n });\n ```\n \n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n\n\n function Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n Promise$2.all = all$1;\n Promise$2.race = race$1;\n Promise$2.resolve = resolve$1;\n Promise$2.reject = reject$1;\n Promise$2._setScheduler = setScheduler;\n Promise$2._setAsap = setAsap;\n Promise$2._asap = asap;\n Promise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n };\n /*global self*/\n\n function polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {// silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n } // Strange compat..\n\n\n Promise$2.polyfill = polyfill$1;\n Promise$2.Promise = Promise$2;\n return Promise$2;\n });\n /* WEBPACK VAR INJECTION */\n\n }).call(exports, __webpack_require__(7), __webpack_require__(8));\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports) {// removed by extract-text-webpack-plugin\n\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n /* global VERSION */\n\n\n __webpack_require__(5);\n\n var _es6Promise = __webpack_require__(4);\n\n var _es6Promise2 = _interopRequireDefault(_es6Promise);\n\n var _utils = __webpack_require__(0);\n\n var Utils = _interopRequireWildcard(_utils);\n\n var _api = __webpack_require__(1);\n\n var API = _interopRequireWildcard(_api);\n\n var _button = __webpack_require__(2);\n\n var _push = __webpack_require__(3);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Noty = function () {\n /**\r\n * @param {object} options\r\n * @return {Noty}\r\n */\n function Noty() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Noty);\n\n this.options = Utils.deepExtend({}, API.Defaults, options);\n this.id = this.options.id || Utils.generateID('bar');\n this.closeTimer = -1;\n this.barDom = null;\n this.layoutDom = null;\n this.progressDom = null;\n this.showing = false;\n this.shown = false;\n this.closed = false;\n this.closing = false;\n this.killable = this.options.timeout || this.options.closeWith.length > 0;\n this.hasSound = this.options.sounds.sources.length > 0;\n this.soundPlayed = false;\n this.listeners = {\n beforeShow: [],\n onShow: [],\n afterShow: [],\n onClose: [],\n afterClose: [],\n onClick: [],\n onHover: [],\n onTemplate: []\n };\n this.promises = {\n show: null,\n close: null\n };\n this.on('beforeShow', this.options.callbacks.beforeShow);\n this.on('onShow', this.options.callbacks.onShow);\n this.on('afterShow', this.options.callbacks.afterShow);\n this.on('onClose', this.options.callbacks.onClose);\n this.on('afterClose', this.options.callbacks.afterClose);\n this.on('onClick', this.options.callbacks.onClick);\n this.on('onHover', this.options.callbacks.onHover);\n this.on('onTemplate', this.options.callbacks.onTemplate);\n return this;\n }\n /**\r\n * @param {string} eventName\r\n * @param {function} cb\r\n * @return {Noty}\r\n */\n\n\n _createClass(Noty, [{\n key: 'on',\n value: function on(eventName) {\n var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n if (typeof cb === 'function' && this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].push(cb);\n }\n\n return this;\n }\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'show',\n value: function show() {\n var _this = this;\n\n if (this.options.killer === true) {\n Noty.closeAll();\n } else if (typeof this.options.killer === 'string') {\n Noty.closeAll(this.options.killer);\n }\n\n var queueCounts = API.getQueueCounts(this.options.queue);\n\n if (queueCounts.current >= queueCounts.maxVisible || API.PageHidden && this.options.visibilityControl) {\n API.addToQueue(this);\n\n if (API.PageHidden && this.hasSound && Utils.inArray('docHidden', this.options.sounds.conditions)) {\n Utils.createAudioElements(this);\n }\n\n if (API.PageHidden && Utils.inArray('docHidden', this.options.titleCount.conditions)) {\n API.docTitle.increment();\n }\n\n return this;\n }\n\n API.Store[this.id] = this;\n API.fire(this, 'beforeShow');\n this.showing = true;\n\n if (this.closing) {\n this.showing = false;\n return this;\n }\n\n API.build(this);\n API.handleModal(this);\n\n if (this.options.force) {\n this.layoutDom.insertBefore(this.barDom, this.layoutDom.firstChild);\n } else {\n this.layoutDom.appendChild(this.barDom);\n }\n\n if (this.hasSound && !this.soundPlayed && Utils.inArray('docVisible', this.options.sounds.conditions)) {\n Utils.createAudioElements(this);\n }\n\n if (Utils.inArray('docVisible', this.options.titleCount.conditions)) {\n API.docTitle.increment();\n }\n\n this.shown = true;\n this.closed = false; // bind button events if any\n\n if (API.hasButtons(this)) {\n Object.keys(this.options.buttons).forEach(function (key) {\n var btn = _this.barDom.querySelector('#' + _this.options.buttons[key].id);\n\n Utils.addListener(btn, 'click', function (e) {\n Utils.stopPropagation(e);\n\n _this.options.buttons[key].cb();\n });\n });\n }\n\n this.progressDom = this.barDom.querySelector('.noty_progressbar');\n\n if (Utils.inArray('click', this.options.closeWith)) {\n Utils.addClass(this.barDom, 'noty_close_with_click');\n Utils.addListener(this.barDom, 'click', function (e) {\n Utils.stopPropagation(e);\n API.fire(_this, 'onClick');\n\n _this.close();\n }, false);\n }\n\n Utils.addListener(this.barDom, 'mouseenter', function () {\n API.fire(_this, 'onHover');\n }, false);\n if (this.options.timeout) Utils.addClass(this.barDom, 'noty_has_timeout');\n\n if (this.options.progressBar) {\n Utils.addClass(this.barDom, 'noty_has_progressbar');\n }\n\n if (Utils.inArray('button', this.options.closeWith)) {\n Utils.addClass(this.barDom, 'noty_close_with_button');\n var closeButton = document.createElement('div');\n Utils.addClass(closeButton, 'noty_close_button');\n closeButton.innerHTML = '×';\n this.barDom.appendChild(closeButton);\n Utils.addListener(closeButton, 'click', function (e) {\n Utils.stopPropagation(e);\n\n _this.close();\n }, false);\n }\n\n API.fire(this, 'onShow');\n\n if (this.options.animation.open === null) {\n this.promises.show = new _es6Promise2.default(function (resolve) {\n resolve();\n });\n } else if (typeof this.options.animation.open === 'function') {\n this.promises.show = new _es6Promise2.default(this.options.animation.open.bind(this));\n } else {\n Utils.addClass(this.barDom, this.options.animation.open);\n this.promises.show = new _es6Promise2.default(function (resolve) {\n Utils.addListener(_this.barDom, Utils.animationEndEvents, function () {\n Utils.removeClass(_this.barDom, _this.options.animation.open);\n resolve();\n });\n });\n }\n\n this.promises.show.then(function () {\n var _t = _this;\n setTimeout(function () {\n API.openFlow(_t);\n }, 100);\n });\n return this;\n }\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n API.dequeueClose(this);\n return this;\n }\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'resume',\n value: function resume() {\n API.queueClose(this);\n return this;\n }\n /**\r\n * @param {int|boolean} ms\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setTimeout',\n value: function (_setTimeout) {\n function setTimeout(_x) {\n return _setTimeout.apply(this, arguments);\n }\n\n setTimeout.toString = function () {\n return _setTimeout.toString();\n };\n\n return setTimeout;\n }(function (ms) {\n this.stop();\n this.options.timeout = ms;\n\n if (this.barDom) {\n if (this.options.timeout) {\n Utils.addClass(this.barDom, 'noty_has_timeout');\n } else {\n Utils.removeClass(this.barDom, 'noty_has_timeout');\n }\n\n var _t = this;\n\n setTimeout(function () {\n // ugly fix for progressbar display bug\n _t.resume();\n }, 100);\n }\n\n return this;\n })\n /**\r\n * @param {string} html\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setText',\n value: function setText(html) {\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n this.barDom.querySelector('.noty_body').innerHTML = html;\n }\n\n if (optionsOverride) this.options.text = html;\n return this;\n }\n /**\r\n * @param {string} type\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setType',\n value: function setType(type) {\n var _this2 = this;\n\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n var classList = Utils.classList(this.barDom).split(' ');\n classList.forEach(function (c) {\n if (c.substring(0, 11) === 'noty_type__') {\n Utils.removeClass(_this2.barDom, c);\n }\n });\n Utils.addClass(this.barDom, 'noty_type__' + type);\n }\n\n if (optionsOverride) this.options.type = type;\n return this;\n }\n /**\r\n * @param {string} theme\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setTheme',\n value: function setTheme(theme) {\n var _this3 = this;\n\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n var classList = Utils.classList(this.barDom).split(' ');\n classList.forEach(function (c) {\n if (c.substring(0, 12) === 'noty_theme__') {\n Utils.removeClass(_this3.barDom, c);\n }\n });\n Utils.addClass(this.barDom, 'noty_theme__' + theme);\n }\n\n if (optionsOverride) this.options.theme = theme;\n return this;\n }\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'close',\n value: function close() {\n var _this4 = this;\n\n if (this.closed) return this;\n\n if (!this.shown) {\n // it's in the queue\n API.removeFromQueue(this);\n return this;\n }\n\n API.fire(this, 'onClose');\n this.closing = true;\n\n if (this.options.animation.close === null) {\n this.promises.close = new _es6Promise2.default(function (resolve) {\n resolve();\n });\n } else if (typeof this.options.animation.close === 'function') {\n this.promises.close = new _es6Promise2.default(this.options.animation.close.bind(this));\n } else {\n Utils.addClass(this.barDom, this.options.animation.close);\n this.promises.close = new _es6Promise2.default(function (resolve) {\n Utils.addListener(_this4.barDom, Utils.animationEndEvents, function () {\n if (_this4.options.force) {\n Utils.remove(_this4.barDom);\n } else {\n API.ghostFix(_this4);\n }\n\n resolve();\n });\n });\n }\n\n this.promises.close.then(function () {\n API.closeFlow(_this4);\n API.handleModalClose(_this4);\n });\n this.closed = true;\n return this;\n } // API functions\n\n /**\r\n * @param {boolean|string} queueName\r\n * @return {Noty}\r\n */\n\n }], [{\n key: 'closeAll',\n value: function closeAll() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n Object.keys(API.Store).forEach(function (id) {\n if (queueName) {\n if (API.Store[id].options.queue === queueName && API.Store[id].killable) {\n API.Store[id].close();\n }\n } else if (API.Store[id].killable) {\n API.Store[id].close();\n }\n });\n return this;\n }\n /**\r\n * @param {Object} obj\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'overrideDefaults',\n value: function overrideDefaults(obj) {\n API.Defaults = Utils.deepExtend({}, API.Defaults, obj);\n return this;\n }\n /**\r\n * @param {int} amount\r\n * @param {string} queueName\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setMaxVisible',\n value: function setMaxVisible() {\n var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : API.DefaultMaxVisible;\n var queueName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global';\n\n if (!API.Queues.hasOwnProperty(queueName)) {\n API.Queues[queueName] = {\n maxVisible: amount,\n queue: []\n };\n }\n\n API.Queues[queueName].maxVisible = amount;\n return this;\n }\n /**\r\n * @param {string} innerHtml\r\n * @param {String} classes\r\n * @param {Function} cb\r\n * @param {Object} attributes\r\n * @return {NotyButton}\r\n */\n\n }, {\n key: 'button',\n value: function button(innerHtml) {\n var classes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var cb = arguments[2];\n var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new _button.NotyButton(innerHtml, classes, cb, attributes);\n }\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'version',\n value: function version() {\n return \"3.1.4\";\n }\n /**\r\n * @param {String} workerPath\r\n * @return {Push}\r\n */\n\n }, {\n key: 'Push',\n value: function Push(workerPath) {\n return new _push.Push(workerPath);\n }\n }]);\n\n return Noty;\n }(); // Document visibility change controller\n\n\n exports.default = Noty;\n Utils.visibilityChangeFlow();\n module.exports = exports['default'];\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports) {\n // shim for using process in browser\n var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n // don't break things. But we need to wrap it in a try catch in case it is\n // wrapped in strict mode code which doesn't define any globals. It's inside a\n // function because try/catches deoptimize in certain engines.\n\n var cachedSetTimeout;\n var cachedClearTimeout;\n\n function defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n }\n\n function defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n }\n\n (function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n }\n\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n }\n\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n }\n\n function drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n }; // v8 likes predictible objects\n\n\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n\n process.title = 'browser';\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = ''; // empty string to avoid regexp issues\n\n process.versions = {};\n\n function noop() {}\n\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n\n process.listeners = function (name) {\n return [];\n };\n\n process.binding = function (name) {\n throw new Error('process.binding is not supported');\n };\n\n process.cwd = function () {\n return '/';\n };\n\n process.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n };\n\n process.umask = function () {\n return 0;\n };\n /***/\n\n },\n /* 8 */\n\n /***/\n function (module, exports) {\n var g; // This works in non-strict mode\n\n g = function () {\n return this;\n }();\n\n try {\n // This works if eval is allowed (see CSP)\n g = g || Function(\"return this\")() || (1, eval)(\"this\");\n } catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof2(window)) === \"object\") g = window;\n } // g can still be undefined, but nothing to do about it...\n // We return undefined, instead of nothing here, so it's\n // easier to handle this case. if(!global) { ...}\n\n\n module.exports = g;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports) {\n /* (ignored) */\n\n /***/\n }])\n );\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/noty/lib/noty.js?");
/***/ }),
/***/ "./node_modules/photoswipe/dist/photoswipe-ui-default.js":
/*!***************************************************************!*\
!*** ./node_modules/photoswipe/dist/photoswipe-ui-default.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n\n/**\n*\n* UI on top of main sliding area (caption, arrows, close button, etc.).\n* Built just using public methods/properties of PhotoSwipe.\n* \n*/\n(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(this, function () {\n 'use strict';\n\n var PhotoSwipeUI_Default = function PhotoSwipeUI_Default(pswp, framework) {\n var ui = this;\n\n var _overlayUIUpdated = false,\n _controlsVisible = true,\n _fullscrenAPI,\n _controls,\n _captionContainer,\n _fakeCaptionContainer,\n _indexIndicator,\n _shareButton,\n _shareModal,\n _shareModalHidden = true,\n _initalCloseOnScrollValue,\n _isIdle,\n _listen,\n _loadingIndicator,\n _loadingIndicatorHidden,\n _loadingIndicatorTimeout,\n _galleryHasOneSlide,\n _options,\n _defaultUIOptions = {\n barsSize: {\n top: 44,\n bottom: 'auto'\n },\n closeElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'],\n timeToIdle: 4000,\n timeToIdleOutside: 1000,\n loadingIndicatorDelay: 1000,\n // 2s\n addCaptionHTMLFn: function addCaptionHTMLFn(item, captionEl\n /*, isFake */\n ) {\n if (!item.title) {\n captionEl.children[0].innerHTML = '';\n return false;\n }\n\n captionEl.children[0].innerHTML = item.title;\n return true;\n },\n closeEl: true,\n captionEl: true,\n fullscreenEl: true,\n zoomEl: true,\n shareEl: true,\n counterEl: true,\n arrowEl: true,\n preloaderEl: true,\n tapToClose: false,\n tapToToggleControls: true,\n clickToCloseNonZoomable: true,\n shareButtons: [{\n id: 'facebook',\n label: 'Share on Facebook',\n url: 'https://www.facebook.com/sharer/sharer.php?u={{url}}'\n }, {\n id: 'twitter',\n label: 'Tweet',\n url: 'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'\n }, {\n id: 'pinterest',\n label: 'Pin it',\n url: 'http://www.pinterest.com/pin/create/button/' + '?url={{url}}&media={{image_url}}&description={{text}}'\n }, {\n id: 'download',\n label: 'Download image',\n url: '{{raw_image_url}}',\n download: true\n }],\n getImageURLForShare: function getImageURLForShare()\n /* shareButtonData */\n {\n return pswp.currItem.src || '';\n },\n getPageURLForShare: function getPageURLForShare()\n /* shareButtonData */\n {\n return window.location.href;\n },\n getTextForShare: function getTextForShare()\n /* shareButtonData */\n {\n return pswp.currItem.title || '';\n },\n indexIndicatorSep: ' / ',\n fitControlsWidth: 1200\n },\n _blockControlsTap,\n _blockControlsTapTimeout;\n\n var _onControlsTap = function _onControlsTap(e) {\n if (_blockControlsTap) {\n return true;\n }\n\n e = e || window.event;\n\n if (_options.timeToIdle && _options.mouseUsed && !_isIdle) {\n // reset idle timer\n _onIdleMouseMove();\n }\n\n var target = e.target || e.srcElement,\n uiElement,\n clickedClass = target.getAttribute('class') || '',\n found;\n\n for (var i = 0; i < _uiElements.length; i++) {\n uiElement = _uiElements[i];\n\n if (uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name) > -1) {\n uiElement.onTap();\n found = true;\n }\n }\n\n if (found) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n _blockControlsTap = true; // Some versions of Android don't prevent ghost click event \n // when preventDefault() was called on touchstart and/or touchend.\n // \n // This happens on v4.3, 4.2, 4.1, \n // older versions strangely work correctly, \n // but just in case we add delay on all of them)\t\n\n var tapDelay = framework.features.isOldAndroid ? 600 : 30;\n _blockControlsTapTimeout = setTimeout(function () {\n _blockControlsTap = false;\n }, tapDelay);\n }\n },\n _fitControlsInViewport = function _fitControlsInViewport() {\n return !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;\n },\n _togglePswpClass = function _togglePswpClass(el, cName, add) {\n framework[(add ? 'add' : 'remove') + 'Class'](el, 'pswp__' + cName);\n },\n // add class when there is just one item in the gallery\n // (by default it hides left/right arrows and 1ofX counter)\n _countNumItems = function _countNumItems() {\n var hasOneSlide = _options.getNumItemsFn() === 1;\n\n if (hasOneSlide !== _galleryHasOneSlide) {\n _togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);\n\n _galleryHasOneSlide = hasOneSlide;\n }\n },\n _toggleShareModalClass = function _toggleShareModalClass() {\n _togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);\n },\n _toggleShareModal = function _toggleShareModal() {\n _shareModalHidden = !_shareModalHidden;\n\n if (!_shareModalHidden) {\n _toggleShareModalClass();\n\n setTimeout(function () {\n if (!_shareModalHidden) {\n framework.addClass(_shareModal, 'pswp__share-modal--fade-in');\n }\n }, 30);\n } else {\n framework.removeClass(_shareModal, 'pswp__share-modal--fade-in');\n setTimeout(function () {\n if (_shareModalHidden) {\n _toggleShareModalClass();\n }\n }, 300);\n }\n\n if (!_shareModalHidden) {\n _updateShareURLs();\n }\n\n return false;\n },\n _openWindowPopup = function _openWindowPopup(e) {\n e = e || window.event;\n var target = e.target || e.srcElement;\n pswp.shout('shareLinkClick', e, target);\n\n if (!target.href) {\n return false;\n }\n\n if (target.hasAttribute('download')) {\n return true;\n }\n\n window.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,' + 'location=yes,width=550,height=420,top=100,left=' + (window.screen ? Math.round(screen.width / 2 - 275) : 100));\n\n if (!_shareModalHidden) {\n _toggleShareModal();\n }\n\n return false;\n },\n _updateShareURLs = function _updateShareURLs() {\n var shareButtonOut = '',\n shareButtonData,\n shareURL,\n image_url,\n page_url,\n share_text;\n\n for (var i = 0; i < _options.shareButtons.length; i++) {\n shareButtonData = _options.shareButtons[i];\n image_url = _options.getImageURLForShare(shareButtonData);\n page_url = _options.getPageURLForShare(shareButtonData);\n share_text = _options.getTextForShare(shareButtonData);\n shareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url)).replace('{{image_url}}', encodeURIComponent(image_url)).replace('{{raw_image_url}}', image_url).replace('{{text}}', encodeURIComponent(share_text));\n shareButtonOut += '<a href=\"' + shareURL + '\" target=\"_blank\" ' + 'class=\"pswp__share--' + shareButtonData.id + '\"' + (shareButtonData.download ? 'download' : '') + '>' + shareButtonData.label + '</a>';\n\n if (_options.parseShareButtonOut) {\n shareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);\n }\n }\n\n _shareModal.children[0].innerHTML = shareButtonOut;\n _shareModal.children[0].onclick = _openWindowPopup;\n },\n _hasCloseClass = function _hasCloseClass(target) {\n for (var i = 0; i < _options.closeElClasses.length; i++) {\n if (framework.hasClass(target, 'pswp__' + _options.closeElClasses[i])) {\n return true;\n }\n }\n },\n _idleInterval,\n _idleTimer,\n _idleIncrement = 0,\n _onIdleMouseMove = function _onIdleMouseMove() {\n clearTimeout(_idleTimer);\n _idleIncrement = 0;\n\n if (_isIdle) {\n ui.setIdle(false);\n }\n },\n _onMouseLeaveWindow = function _onMouseLeaveWindow(e) {\n e = e ? e : window.event;\n var from = e.relatedTarget || e.toElement;\n\n if (!from || from.nodeName === 'HTML') {\n clearTimeout(_idleTimer);\n _idleTimer = setTimeout(function () {\n ui.setIdle(true);\n }, _options.timeToIdleOutside);\n }\n },\n _setupFullscreenAPI = function _setupFullscreenAPI() {\n if (_options.fullscreenEl && !framework.features.isOldAndroid) {\n if (!_fullscrenAPI) {\n _fullscrenAPI = ui.getFullscreenAPI();\n }\n\n if (_fullscrenAPI) {\n framework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n ui.updateFullscreen();\n framework.addClass(pswp.template, 'pswp--supports-fs');\n } else {\n framework.removeClass(pswp.template, 'pswp--supports-fs');\n }\n }\n },\n _setupLoadingIndicator = function _setupLoadingIndicator() {\n // Setup loading indicator\n if (_options.preloaderEl) {\n _toggleLoadingIndicator(true);\n\n _listen('beforeChange', function () {\n clearTimeout(_loadingIndicatorTimeout); // display loading indicator with delay\n\n _loadingIndicatorTimeout = setTimeout(function () {\n if (pswp.currItem && pswp.currItem.loading) {\n if (!pswp.allowProgressiveImg() || pswp.currItem.img && !pswp.currItem.img.naturalWidth) {\n // show preloader if progressive loading is not enabled, \n // or image width is not defined yet (because of slow connection)\n _toggleLoadingIndicator(false); // items-controller.js function allowProgressiveImg\n\n }\n } else {\n _toggleLoadingIndicator(true); // hide preloader\n\n }\n }, _options.loadingIndicatorDelay);\n });\n\n _listen('imageLoadComplete', function (index, item) {\n if (pswp.currItem === item) {\n _toggleLoadingIndicator(true);\n }\n });\n }\n },\n _toggleLoadingIndicator = function _toggleLoadingIndicator(hide) {\n if (_loadingIndicatorHidden !== hide) {\n _togglePswpClass(_loadingIndicator, 'preloader--active', !hide);\n\n _loadingIndicatorHidden = hide;\n }\n },\n _applyNavBarGaps = function _applyNavBarGaps(item) {\n var gap = item.vGap;\n\n if (_fitControlsInViewport()) {\n var bars = _options.barsSize;\n\n if (_options.captionEl && bars.bottom === 'auto') {\n if (!_fakeCaptionContainer) {\n _fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');\n\n _fakeCaptionContainer.appendChild(framework.createEl('pswp__caption__center'));\n\n _controls.insertBefore(_fakeCaptionContainer, _captionContainer);\n\n framework.addClass(_controls, 'pswp__ui--fit');\n }\n\n if (_options.addCaptionHTMLFn(item, _fakeCaptionContainer, true)) {\n var captionSize = _fakeCaptionContainer.clientHeight;\n gap.bottom = parseInt(captionSize, 10) || 44;\n } else {\n gap.bottom = bars.top; // if no caption, set size of bottom gap to size of top\n }\n } else {\n gap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;\n } // height of top bar is static, no need to calculate it\n\n\n gap.top = bars.top;\n } else {\n gap.top = gap.bottom = 0;\n }\n },\n _setupIdle = function _setupIdle() {\n // Hide controls when mouse is used\n if (_options.timeToIdle) {\n _listen('mouseUsed', function () {\n framework.bind(document, 'mousemove', _onIdleMouseMove);\n framework.bind(document, 'mouseout', _onMouseLeaveWindow);\n _idleInterval = setInterval(function () {\n _idleIncrement++;\n\n if (_idleIncrement === 2) {\n ui.setIdle(true);\n }\n }, _options.timeToIdle / 2);\n });\n }\n },\n _setupHidingControlsDuringGestures = function _setupHidingControlsDuringGestures() {\n // Hide controls on vertical drag\n _listen('onVerticalDrag', function (now) {\n if (_controlsVisible && now < 0.95) {\n ui.hideControls();\n } else if (!_controlsVisible && now >= 0.95) {\n ui.showControls();\n }\n }); // Hide controls when pinching to close\n\n\n var pinchControlsHidden;\n\n _listen('onPinchClose', function (now) {\n if (_controlsVisible && now < 0.9) {\n ui.hideControls();\n pinchControlsHidden = true;\n } else if (pinchControlsHidden && !_controlsVisible && now > 0.9) {\n ui.showControls();\n }\n });\n\n _listen('zoomGestureEnded', function () {\n pinchControlsHidden = false;\n\n if (pinchControlsHidden && !_controlsVisible) {\n ui.showControls();\n }\n });\n };\n\n var _uiElements = [{\n name: 'caption',\n option: 'captionEl',\n onInit: function onInit(el) {\n _captionContainer = el;\n }\n }, {\n name: 'share-modal',\n option: 'shareEl',\n onInit: function onInit(el) {\n _shareModal = el;\n },\n onTap: function onTap() {\n _toggleShareModal();\n }\n }, {\n name: 'button--share',\n option: 'shareEl',\n onInit: function onInit(el) {\n _shareButton = el;\n },\n onTap: function onTap() {\n _toggleShareModal();\n }\n }, {\n name: 'button--zoom',\n option: 'zoomEl',\n onTap: pswp.toggleDesktopZoom\n }, {\n name: 'counter',\n option: 'counterEl',\n onInit: function onInit(el) {\n _indexIndicator = el;\n }\n }, {\n name: 'button--close',\n option: 'closeEl',\n onTap: pswp.close\n }, {\n name: 'button--arrow--left',\n option: 'arrowEl',\n onTap: pswp.prev\n }, {\n name: 'button--arrow--right',\n option: 'arrowEl',\n onTap: pswp.next\n }, {\n name: 'button--fs',\n option: 'fullscreenEl',\n onTap: function onTap() {\n if (_fullscrenAPI.isFullscreen()) {\n _fullscrenAPI.exit();\n } else {\n _fullscrenAPI.enter();\n }\n }\n }, {\n name: 'preloader',\n option: 'preloaderEl',\n onInit: function onInit(el) {\n _loadingIndicator = el;\n }\n }];\n\n var _setupUIElements = function _setupUIElements() {\n var item, classAttr, uiElement;\n\n var loopThroughChildElements = function loopThroughChildElements(sChildren) {\n if (!sChildren) {\n return;\n }\n\n var l = sChildren.length;\n\n for (var i = 0; i < l; i++) {\n item = sChildren[i];\n classAttr = item.className;\n\n for (var a = 0; a < _uiElements.length; a++) {\n uiElement = _uiElements[a];\n\n if (classAttr.indexOf('pswp__' + uiElement.name) > -1) {\n if (_options[uiElement.option]) {\n // if element is not disabled from options\n framework.removeClass(item, 'pswp__element--disabled');\n\n if (uiElement.onInit) {\n uiElement.onInit(item);\n } //item.style.display = 'block';\n\n } else {\n framework.addClass(item, 'pswp__element--disabled'); //item.style.display = 'none';\n }\n }\n }\n }\n };\n\n loopThroughChildElements(_controls.children);\n var topBar = framework.getChildByClass(_controls, 'pswp__top-bar');\n\n if (topBar) {\n loopThroughChildElements(topBar.children);\n }\n };\n\n ui.init = function () {\n // extend options\n framework.extend(pswp.options, _defaultUIOptions, true); // create local link for fast access\n\n _options = pswp.options; // find pswp__ui element\n\n _controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui'); // create local link\n\n _listen = pswp.listen;\n\n _setupHidingControlsDuringGestures(); // update controls when slides change\n\n\n _listen('beforeChange', ui.update); // toggle zoom on double-tap\n\n\n _listen('doubleTap', function (point) {\n var initialZoomLevel = pswp.currItem.initialZoomLevel;\n\n if (pswp.getZoomLevel() !== initialZoomLevel) {\n pswp.zoomTo(initialZoomLevel, point, 333);\n } else {\n pswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);\n }\n }); // Allow text selection in caption\n\n\n _listen('preventDragEvent', function (e, isDown, preventObj) {\n var t = e.target || e.srcElement;\n\n if (t && t.getAttribute('class') && e.type.indexOf('mouse') > -1 && (t.getAttribute('class').indexOf('__caption') > 0 || /(SMALL|STRONG|EM)/i.test(t.tagName))) {\n preventObj.prevent = false;\n }\n }); // bind events for UI\n\n\n _listen('bindEvents', function () {\n framework.bind(_controls, 'pswpTap click', _onControlsTap);\n framework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n\n if (!pswp.likelyTouchDevice) {\n framework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n }\n }); // unbind events for UI\n\n\n _listen('unbindEvents', function () {\n if (!_shareModalHidden) {\n _toggleShareModal();\n }\n\n if (_idleInterval) {\n clearInterval(_idleInterval);\n }\n\n framework.unbind(document, 'mouseout', _onMouseLeaveWindow);\n framework.unbind(document, 'mousemove', _onIdleMouseMove);\n framework.unbind(_controls, 'pswpTap click', _onControlsTap);\n framework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);\n framework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);\n\n if (_fullscrenAPI) {\n framework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);\n\n if (_fullscrenAPI.isFullscreen()) {\n _options.hideAnimationDuration = 0;\n\n _fullscrenAPI.exit();\n }\n\n _fullscrenAPI = null;\n }\n }); // clean up things when gallery is destroyed\n\n\n _listen('destroy', function () {\n if (_options.captionEl) {\n if (_fakeCaptionContainer) {\n _controls.removeChild(_fakeCaptionContainer);\n }\n\n framework.removeClass(_captionContainer, 'pswp__caption--empty');\n }\n\n if (_shareModal) {\n _shareModal.children[0].onclick = null;\n }\n\n framework.removeClass(_controls, 'pswp__ui--over-close');\n framework.addClass(_controls, 'pswp__ui--hidden');\n ui.setIdle(false);\n });\n\n if (!_options.showAnimationDuration) {\n framework.removeClass(_controls, 'pswp__ui--hidden');\n }\n\n _listen('initialZoomIn', function () {\n if (_options.showAnimationDuration) {\n framework.removeClass(_controls, 'pswp__ui--hidden');\n }\n });\n\n _listen('initialZoomOut', function () {\n framework.addClass(_controls, 'pswp__ui--hidden');\n });\n\n _listen('parseVerticalMargin', _applyNavBarGaps);\n\n _setupUIElements();\n\n if (_options.shareEl && _shareButton && _shareModal) {\n _shareModalHidden = true;\n }\n\n _countNumItems();\n\n _setupIdle();\n\n _setupFullscreenAPI();\n\n _setupLoadingIndicator();\n };\n\n ui.setIdle = function (isIdle) {\n _isIdle = isIdle;\n\n _togglePswpClass(_controls, 'ui--idle', isIdle);\n };\n\n ui.update = function () {\n // Don't update UI if it's hidden\n if (_controlsVisible && pswp.currItem) {\n ui.updateIndexIndicator();\n\n if (_options.captionEl) {\n _options.addCaptionHTMLFn(pswp.currItem, _captionContainer);\n\n _togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);\n }\n\n _overlayUIUpdated = true;\n } else {\n _overlayUIUpdated = false;\n }\n\n if (!_shareModalHidden) {\n _toggleShareModal();\n }\n\n _countNumItems();\n };\n\n ui.updateFullscreen = function (e) {\n if (e) {\n // some browsers change window scroll position during the fullscreen\n // so PhotoSwipe updates it just in case\n setTimeout(function () {\n pswp.setScrollOffset(0, framework.getScrollY());\n }, 50);\n } // toogle pswp--fs class on root element\n\n\n framework[(_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class'](pswp.template, 'pswp--fs');\n };\n\n ui.updateIndexIndicator = function () {\n if (_options.counterEl) {\n _indexIndicator.innerHTML = pswp.getCurrentIndex() + 1 + _options.indexIndicatorSep + _options.getNumItemsFn();\n }\n };\n\n ui.onGlobalTap = function (e) {\n e = e || window.event;\n var target = e.target || e.srcElement;\n\n if (_blockControlsTap) {\n return;\n }\n\n if (e.detail && e.detail.pointerType === 'mouse') {\n // close gallery if clicked outside of the image\n if (_hasCloseClass(target)) {\n pswp.close();\n return;\n }\n\n if (framework.hasClass(target, 'pswp__img')) {\n if (pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {\n if (_options.clickToCloseNonZoomable) {\n pswp.close();\n }\n } else {\n pswp.toggleDesktopZoom(e.detail.releasePoint);\n }\n }\n } else {\n // tap anywhere (except buttons) to toggle visibility of controls\n if (_options.tapToToggleControls) {\n if (_controlsVisible) {\n ui.hideControls();\n } else {\n ui.showControls();\n }\n } // tap to close gallery\n\n\n if (_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target))) {\n pswp.close();\n return;\n }\n }\n };\n\n ui.onMouseOver = function (e) {\n e = e || window.event;\n var target = e.target || e.srcElement; // add class when mouse is over an element that should close the gallery\n\n _togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));\n };\n\n ui.hideControls = function () {\n framework.addClass(_controls, 'pswp__ui--hidden');\n _controlsVisible = false;\n };\n\n ui.showControls = function () {\n _controlsVisible = true;\n\n if (!_overlayUIUpdated) {\n ui.update();\n }\n\n framework.removeClass(_controls, 'pswp__ui--hidden');\n };\n\n ui.supportsFullscreen = function () {\n var d = document;\n return !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);\n };\n\n ui.getFullscreenAPI = function () {\n var dE = document.documentElement,\n api,\n tF = 'fullscreenchange';\n\n if (dE.requestFullscreen) {\n api = {\n enterK: 'requestFullscreen',\n exitK: 'exitFullscreen',\n elementK: 'fullscreenElement',\n eventK: tF\n };\n } else if (dE.mozRequestFullScreen) {\n api = {\n enterK: 'mozRequestFullScreen',\n exitK: 'mozCancelFullScreen',\n elementK: 'mozFullScreenElement',\n eventK: 'moz' + tF\n };\n } else if (dE.webkitRequestFullscreen) {\n api = {\n enterK: 'webkitRequestFullscreen',\n exitK: 'webkitExitFullscreen',\n elementK: 'webkitFullscreenElement',\n eventK: 'webkit' + tF\n };\n } else if (dE.msRequestFullscreen) {\n api = {\n enterK: 'msRequestFullscreen',\n exitK: 'msExitFullscreen',\n elementK: 'msFullscreenElement',\n eventK: 'MSFullscreenChange'\n };\n }\n\n if (api) {\n api.enter = function () {\n // disable close-on-scroll in fullscreen\n _initalCloseOnScrollValue = _options.closeOnScroll;\n _options.closeOnScroll = false;\n\n if (this.enterK === 'webkitRequestFullscreen') {\n pswp.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT);\n } else {\n return pswp.template[this.enterK]();\n }\n };\n\n api.exit = function () {\n _options.closeOnScroll = _initalCloseOnScrollValue;\n return document[this.exitK]();\n };\n\n api.isFullscreen = function () {\n return document[this.elementK];\n };\n }\n\n return api;\n };\n };\n\n return PhotoSwipeUI_Default;\n});\n\n//# sourceURL=webpack:///./node_modules/photoswipe/dist/photoswipe-ui-default.js?");
/***/ }),
/***/ "./node_modules/photoswipe/dist/photoswipe.js":
/*!****************************************************!*\
!*** ./node_modules/photoswipe/dist/photoswipe.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! PhotoSwipe - v4.1.3 - 2019-01-08\n* http://photoswipe.com\n* Copyright (c) 2019 Dmitry Semenov; */\n(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(this, function () {\n 'use strict';\n\n var PhotoSwipe = function PhotoSwipe(template, UiClass, items, options) {\n /*>>framework-bridge*/\n\n /**\n *\n * Set of generic functions used by gallery.\n * \n * You're free to modify anything here as long as functionality is kept.\n * \n */\n var framework = {\n features: null,\n bind: function bind(target, type, listener, unbind) {\n var methodName = (unbind ? 'remove' : 'add') + 'EventListener';\n type = type.split(' ');\n\n for (var i = 0; i < type.length; i++) {\n if (type[i]) {\n target[methodName](type[i], listener, false);\n }\n }\n },\n isArray: function isArray(obj) {\n return obj instanceof Array;\n },\n createEl: function createEl(classes, tag) {\n var el = document.createElement(tag || 'div');\n\n if (classes) {\n el.className = classes;\n }\n\n return el;\n },\n getScrollY: function getScrollY() {\n var yOffset = window.pageYOffset;\n return yOffset !== undefined ? yOffset : document.documentElement.scrollTop;\n },\n unbind: function unbind(target, type, listener) {\n framework.bind(target, type, listener, true);\n },\n removeClass: function removeClass(el, className) {\n var reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n el.className = el.className.replace(reg, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n },\n addClass: function addClass(el, className) {\n if (!framework.hasClass(el, className)) {\n el.className += (el.className ? ' ' : '') + className;\n }\n },\n hasClass: function hasClass(el, className) {\n return el.className && new RegExp('(^|\\\\s)' + className + '(\\\\s|$)').test(el.className);\n },\n getChildByClass: function getChildByClass(parentEl, childClassName) {\n var node = parentEl.firstChild;\n\n while (node) {\n if (framework.hasClass(node, childClassName)) {\n return node;\n }\n\n node = node.nextSibling;\n }\n },\n arraySearch: function arraySearch(array, value, key) {\n var i = array.length;\n\n while (i--) {\n if (array[i][key] === value) {\n return i;\n }\n }\n\n return -1;\n },\n extend: function extend(o1, o2, preventOverwrite) {\n for (var prop in o2) {\n if (o2.hasOwnProperty(prop)) {\n if (preventOverwrite && o1.hasOwnProperty(prop)) {\n continue;\n }\n\n o1[prop] = o2[prop];\n }\n }\n },\n easing: {\n sine: {\n out: function out(k) {\n return Math.sin(k * (Math.PI / 2));\n },\n inOut: function inOut(k) {\n return -(Math.cos(Math.PI * k) - 1) / 2;\n }\n },\n cubic: {\n out: function out(k) {\n return --k * k * k + 1;\n }\n /*\n \telastic: {\n \t\tout: function ( k ) {\n \t\t\t\tvar s, a = 0.1, p = 0.4;\n \t\t\tif ( k === 0 ) return 0;\n \t\t\tif ( k === 1 ) return 1;\n \t\t\tif ( !a || a < 1 ) { a = 1; s = p / 4; }\n \t\t\telse s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n \t\t\treturn ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );\n \t\t\t},\n \t},\n \tback: {\n \t\tout: function ( k ) {\n \t\t\tvar s = 1.70158;\n \t\t\treturn --k * k * ( ( s + 1 ) * k + s ) + 1;\n \t\t}\n \t}\n */\n\n }\n },\n\n /**\n * \n * @return {object}\n * \n * {\n * raf : request animation frame function\n * caf : cancel animation frame function\n * transfrom : transform property key (with vendor), or null if not supported\n * oldIE : IE8 or below\n * }\n * \n */\n detectFeatures: function detectFeatures() {\n if (framework.features) {\n return framework.features;\n }\n\n var helperEl = framework.createEl(),\n helperStyle = helperEl.style,\n vendor = '',\n features = {}; // IE8 and below\n\n features.oldIE = document.all && !document.addEventListener;\n features.touch = 'ontouchstart' in window;\n\n if (window.requestAnimationFrame) {\n features.raf = window.requestAnimationFrame;\n features.caf = window.cancelAnimationFrame;\n }\n\n features.pointerEvent = !!window.PointerEvent || navigator.msPointerEnabled; // fix false-positive detection of old Android in new IE\n // (IE11 ua string contains \"Android 4.0\")\n\n if (!features.pointerEvent) {\n var ua = navigator.userAgent; // Detect if device is iPhone or iPod and if it's older than iOS 8\n // http://stackoverflow.com/a/14223920\n // \n // This detection is made because of buggy top/bottom toolbars\n // that don't trigger window.resize event.\n // For more info refer to _isFixedPosition variable in core.js\n\n if (/iP(hone|od)/.test(navigator.platform)) {\n var v = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n\n if (v && v.length > 0) {\n v = parseInt(v[1], 10);\n\n if (v >= 1 && v < 8) {\n features.isOldIOSPhone = true;\n }\n }\n } // Detect old Android (before KitKat)\n // due to bugs related to position:fixed\n // http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript\n\n\n var match = ua.match(/Android\\s([0-9\\.]*)/);\n var androidversion = match ? match[1] : 0;\n androidversion = parseFloat(androidversion);\n\n if (androidversion >= 1) {\n if (androidversion < 4.4) {\n features.isOldAndroid = true; // for fixed position bug & performance\n }\n\n features.androidVersion = androidversion; // for touchend bug\n }\n\n features.isMobileOpera = /opera mini|opera mobi/i.test(ua); // p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.\n }\n\n var styleChecks = ['transform', 'perspective', 'animationName'],\n vendors = ['', 'webkit', 'Moz', 'ms', 'O'],\n styleCheckItem,\n styleName;\n\n for (var i = 0; i < 4; i++) {\n vendor = vendors[i];\n\n for (var a = 0; a < 3; a++) {\n styleCheckItem = styleChecks[a]; // uppercase first letter of property name, if vendor is present\n\n styleName = vendor + (vendor ? styleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) : styleCheckItem);\n\n if (!features[styleCheckItem] && styleName in helperStyle) {\n features[styleCheckItem] = styleName;\n }\n }\n\n if (vendor && !features.raf) {\n vendor = vendor.toLowerCase();\n features.raf = window[vendor + 'RequestAnimationFrame'];\n\n if (features.raf) {\n features.caf = window[vendor + 'CancelAnimationFrame'] || window[vendor + 'CancelRequestAnimationFrame'];\n }\n }\n }\n\n if (!features.raf) {\n var lastTime = 0;\n\n features.raf = function (fn) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n fn(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n features.caf = function (id) {\n clearTimeout(id);\n };\n } // Detect SVG support\n\n\n features.svg = !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;\n framework.features = features;\n return features;\n }\n };\n framework.detectFeatures(); // Override addEventListener for old versions of IE\n\n if (framework.features.oldIE) {\n framework.bind = function (target, type, listener, unbind) {\n type = type.split(' ');\n\n var methodName = (unbind ? 'detach' : 'attach') + 'Event',\n evName,\n _handleEv = function _handleEv() {\n listener.handleEvent.call(listener);\n };\n\n for (var i = 0; i < type.length; i++) {\n evName = type[i];\n\n if (evName) {\n if (_typeof(listener) === 'object' && listener.handleEvent) {\n if (!unbind) {\n listener['oldIE' + evName] = _handleEv;\n } else {\n if (!listener['oldIE' + evName]) {\n return false;\n }\n }\n\n target[methodName]('on' + evName, listener['oldIE' + evName]);\n } else {\n target[methodName]('on' + evName, listener);\n }\n }\n }\n };\n }\n /*>>framework-bridge*/\n\n /*>>core*/\n //function(template, UiClass, items, options)\n\n\n var self = this;\n /**\n * Static vars, don't change unless you know what you're doing.\n */\n\n var DOUBLE_TAP_RADIUS = 25,\n NUM_HOLDERS = 3;\n /**\n * Options\n */\n\n var _options = {\n allowPanToNext: true,\n spacing: 0.12,\n bgOpacity: 1,\n mouseUsed: false,\n loop: true,\n pinchToClose: true,\n closeOnScroll: true,\n closeOnVerticalDrag: true,\n verticalDragRange: 0.75,\n hideAnimationDuration: 333,\n showAnimationDuration: 333,\n showHideOpacity: false,\n focus: true,\n escKey: true,\n arrowKeys: true,\n mainScrollEndFriction: 0.35,\n panEndFriction: 0.35,\n isClickableElement: function isClickableElement(el) {\n return el.tagName === 'A';\n },\n getDoubleTapZoom: function getDoubleTapZoom(isMouseClick, item) {\n if (isMouseClick) {\n return 1;\n } else {\n return item.initialZoomLevel < 0.7 ? 1 : 1.33;\n }\n },\n maxSpreadZoom: 1.33,\n modal: true,\n // not fully implemented yet\n scaleMode: 'fit' // TODO\n\n };\n framework.extend(_options, options);\n /**\n * Private helper variables & functions\n */\n\n var _getEmptyPoint = function _getEmptyPoint() {\n return {\n x: 0,\n y: 0\n };\n };\n\n var _isOpen,\n _isDestroying,\n _closedByScroll,\n _currentItemIndex,\n _containerStyle,\n _containerShiftIndex,\n _currPanDist = _getEmptyPoint(),\n _startPanOffset = _getEmptyPoint(),\n _panOffset = _getEmptyPoint(),\n _upMoveEvents,\n // drag move, drag end & drag cancel events array\n _downEvents,\n // drag start events array\n _globalEventHandlers,\n _viewportSize = {},\n _currZoomLevel,\n _startZoomLevel,\n _translatePrefix,\n _translateSufix,\n _updateSizeInterval,\n _itemsNeedUpdate,\n _currPositionIndex = 0,\n _offset = {},\n _slideSize = _getEmptyPoint(),\n // size of slide area, including spacing\n _itemHolders,\n _prevItemIndex,\n _indexDiff = 0,\n // difference of indexes since last content update\n _dragStartEvent,\n _dragMoveEvent,\n _dragEndEvent,\n _dragCancelEvent,\n _transformKey,\n _pointerEventEnabled,\n _isFixedPosition = true,\n _likelyTouchDevice,\n _modules = [],\n _requestAF,\n _cancelAF,\n _initalClassName,\n _initalWindowScrollY,\n _oldIE,\n _currentWindowScrollY,\n _features,\n _windowVisibleSize = {},\n _renderMaxResolution = false,\n _orientationChangeTimeout,\n // Registers PhotoSWipe module (History, Controller ...)\n _registerModule = function _registerModule(name, module) {\n framework.extend(self, module.publicMethods);\n\n _modules.push(name);\n },\n _getLoopedId = function _getLoopedId(index) {\n var numSlides = _getNumItems();\n\n if (index > numSlides - 1) {\n return index - numSlides;\n } else if (index < 0) {\n return numSlides + index;\n }\n\n return index;\n },\n // Micro bind/trigger\n _listeners = {},\n _listen = function _listen(name, fn) {\n if (!_listeners[name]) {\n _listeners[name] = [];\n }\n\n return _listeners[name].push(fn);\n },\n _shout = function _shout(name) {\n var listeners = _listeners[name];\n\n if (listeners) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].apply(self, args);\n }\n }\n },\n _getCurrentTime = function _getCurrentTime() {\n return new Date().getTime();\n },\n _applyBgOpacity = function _applyBgOpacity(opacity) {\n _bgOpacity = opacity;\n self.bg.style.opacity = opacity * _options.bgOpacity;\n },\n _applyZoomTransform = function _applyZoomTransform(styleObj, x, y, zoom, item) {\n if (!_renderMaxResolution || item && item !== self.currItem) {\n zoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);\n }\n\n styleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';\n },\n _applyCurrentZoomPan = function _applyCurrentZoomPan(allowRenderResolution) {\n if (_currZoomElementStyle) {\n if (allowRenderResolution) {\n if (_currZoomLevel > self.currItem.fitRatio) {\n if (!_renderMaxResolution) {\n _setImageSize(self.currItem, false, true);\n\n _renderMaxResolution = true;\n }\n } else {\n if (_renderMaxResolution) {\n _setImageSize(self.currItem);\n\n _renderMaxResolution = false;\n }\n }\n }\n\n _applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);\n }\n },\n _applyZoomPanToItem = function _applyZoomPanToItem(item) {\n if (item.container) {\n _applyZoomTransform(item.container.style, item.initialPosition.x, item.initialPosition.y, item.initialZoomLevel, item);\n }\n },\n _setTranslateX = function _setTranslateX(x, elStyle) {\n elStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;\n },\n _moveMainScroll = function _moveMainScroll(x, dragging) {\n if (!_options.loop && dragging) {\n var newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,\n delta = Math.round(x - _mainScrollPos.x);\n\n if (newSlideIndexOffset < 0 && delta > 0 || newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) {\n x = _mainScrollPos.x + delta * _options.mainScrollEndFriction;\n }\n }\n\n _mainScrollPos.x = x;\n\n _setTranslateX(x, _containerStyle);\n },\n _calculatePanOffset = function _calculatePanOffset(axis, zoomLevel) {\n var m = _midZoomPoint[axis] - _offset[axis];\n return _startPanOffset[axis] + _currPanDist[axis] + m - m * (zoomLevel / _startZoomLevel);\n },\n _equalizePoints = function _equalizePoints(p1, p2) {\n p1.x = p2.x;\n p1.y = p2.y;\n\n if (p2.id) {\n p1.id = p2.id;\n }\n },\n _roundPoint = function _roundPoint(p) {\n p.x = Math.round(p.x);\n p.y = Math.round(p.y);\n },\n _mouseMoveTimeout = null,\n _onFirstMouseMove = function _onFirstMouseMove() {\n // Wait until mouse move event is fired at least twice during 100ms\n // We do this, because some mobile browsers trigger it on touchstart\n if (_mouseMoveTimeout) {\n framework.unbind(document, 'mousemove', _onFirstMouseMove);\n framework.addClass(template, 'pswp--has_mouse');\n _options.mouseUsed = true;\n\n _shout('mouseUsed');\n }\n\n _mouseMoveTimeout = setTimeout(function () {\n _mouseMoveTimeout = null;\n }, 100);\n },\n _bindEvents = function _bindEvents() {\n framework.bind(document, 'keydown', self);\n\n if (_features.transform) {\n // don't bind click event in browsers that don't support transform (mostly IE8)\n framework.bind(self.scrollWrap, 'click', self);\n }\n\n if (!_options.mouseUsed) {\n framework.bind(document, 'mousemove', _onFirstMouseMove);\n }\n\n framework.bind(window, 'resize scroll orientationchange', self);\n\n _shout('bindEvents');\n },\n _unbindEvents = function _unbindEvents() {\n framework.unbind(window, 'resize scroll orientationchange', self);\n framework.unbind(window, 'scroll', _globalEventHandlers.scroll);\n framework.unbind(document, 'keydown', self);\n framework.unbind(document, 'mousemove', _onFirstMouseMove);\n\n if (_features.transform) {\n framework.unbind(self.scrollWrap, 'click', self);\n }\n\n if (_isDragging) {\n framework.unbind(window, _upMoveEvents, self);\n }\n\n clearTimeout(_orientationChangeTimeout);\n\n _shout('unbindEvents');\n },\n _calculatePanBounds = function _calculatePanBounds(zoomLevel, update) {\n var bounds = _calculateItemSize(self.currItem, _viewportSize, zoomLevel);\n\n if (update) {\n _currPanBounds = bounds;\n }\n\n return bounds;\n },\n _getMinZoomLevel = function _getMinZoomLevel(item) {\n if (!item) {\n item = self.currItem;\n }\n\n return item.initialZoomLevel;\n },\n _getMaxZoomLevel = function _getMaxZoomLevel(item) {\n if (!item) {\n item = self.currItem;\n }\n\n return item.w > 0 ? _options.maxSpreadZoom : 1;\n },\n // Return true if offset is out of the bounds\n _modifyDestPanOffset = function _modifyDestPanOffset(axis, destPanBounds, destPanOffset, destZoomLevel) {\n if (destZoomLevel === self.currItem.initialZoomLevel) {\n destPanOffset[axis] = self.currItem.initialPosition[axis];\n return true;\n } else {\n destPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel);\n\n if (destPanOffset[axis] > destPanBounds.min[axis]) {\n destPanOffset[axis] = destPanBounds.min[axis];\n return true;\n } else if (destPanOffset[axis] < destPanBounds.max[axis]) {\n destPanOffset[axis] = destPanBounds.max[axis];\n return true;\n }\n }\n\n return false;\n },\n _setupTransforms = function _setupTransforms() {\n if (_transformKey) {\n // setup 3d transforms\n var allow3dTransform = _features.perspective && !_likelyTouchDevice;\n _translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');\n _translateSufix = _features.perspective ? ', 0px)' : ')';\n return;\n } // Override zoom/pan/move functions in case old browser is used (most likely IE)\n // (so they use left/top/width/height, instead of CSS transform)\n\n\n _transformKey = 'left';\n framework.addClass(template, 'pswp--ie');\n\n _setTranslateX = function _setTranslateX(x, elStyle) {\n elStyle.left = x + 'px';\n };\n\n _applyZoomPanToItem = function _applyZoomPanToItem(item) {\n var zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n s = item.container.style,\n w = zoomRatio * item.w,\n h = zoomRatio * item.h;\n s.width = w + 'px';\n s.height = h + 'px';\n s.left = item.initialPosition.x + 'px';\n s.top = item.initialPosition.y + 'px';\n };\n\n _applyCurrentZoomPan = function _applyCurrentZoomPan() {\n if (_currZoomElementStyle) {\n var s = _currZoomElementStyle,\n item = self.currItem,\n zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,\n w = zoomRatio * item.w,\n h = zoomRatio * item.h;\n s.width = w + 'px';\n s.height = h + 'px';\n s.left = _panOffset.x + 'px';\n s.top = _panOffset.y + 'px';\n }\n };\n },\n _onKeyDown = function _onKeyDown(e) {\n var keydownAction = '';\n\n if (_options.escKey && e.keyCode === 27) {\n keydownAction = 'close';\n } else if (_options.arrowKeys) {\n if (e.keyCode === 37) {\n keydownAction = 'prev';\n } else if (e.keyCode === 39) {\n keydownAction = 'next';\n }\n }\n\n if (keydownAction) {\n // don't do anything if special key pressed to prevent from overriding default browser actions\n // e.g. in Chrome on Mac cmd+arrow-left returns to previous page\n if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n\n self[keydownAction]();\n }\n }\n },\n _onGlobalClick = function _onGlobalClick(e) {\n if (!e) {\n return;\n } // don't allow click event to pass through when triggering after drag or some other gesture\n\n\n if (_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n _updatePageScrollOffset = function _updatePageScrollOffset() {\n self.setScrollOffset(0, framework.getScrollY());\n }; // Micro animation engine\n\n\n var _animations = {},\n _numAnimations = 0,\n _stopAnimation = function _stopAnimation(name) {\n if (_animations[name]) {\n if (_animations[name].raf) {\n _cancelAF(_animations[name].raf);\n }\n\n _numAnimations--;\n delete _animations[name];\n }\n },\n _registerStartAnimation = function _registerStartAnimation(name) {\n if (_animations[name]) {\n _stopAnimation(name);\n }\n\n if (!_animations[name]) {\n _numAnimations++;\n _animations[name] = {};\n }\n },\n _stopAllAnimations = function _stopAllAnimations() {\n for (var prop in _animations) {\n if (_animations.hasOwnProperty(prop)) {\n _stopAnimation(prop);\n }\n }\n },\n _animateProp = function _animateProp(name, b, endProp, d, easingFn, onUpdate, onComplete) {\n var startAnimTime = _getCurrentTime(),\n t;\n\n _registerStartAnimation(name);\n\n var animloop = function animloop() {\n if (_animations[name]) {\n t = _getCurrentTime() - startAnimTime; // time diff\n //b - beginning (start prop)\n //d - anim duration\n\n if (t >= d) {\n _stopAnimation(name);\n\n onUpdate(endProp);\n\n if (onComplete) {\n onComplete();\n }\n\n return;\n }\n\n onUpdate((endProp - b) * easingFn(t / d) + b);\n _animations[name].raf = _requestAF(animloop);\n }\n };\n\n animloop();\n };\n\n var publicMethods = {\n // make a few local variables and functions public\n shout: _shout,\n listen: _listen,\n viewportSize: _viewportSize,\n options: _options,\n isMainScrollAnimating: function isMainScrollAnimating() {\n return _mainScrollAnimating;\n },\n getZoomLevel: function getZoomLevel() {\n return _currZoomLevel;\n },\n getCurrentIndex: function getCurrentIndex() {\n return _currentItemIndex;\n },\n isDragging: function isDragging() {\n return _isDragging;\n },\n isZooming: function isZooming() {\n return _isZooming;\n },\n setScrollOffset: function setScrollOffset(x, y) {\n _offset.x = x;\n _currentWindowScrollY = _offset.y = y;\n\n _shout('updateScrollOffset', _offset);\n },\n applyZoomPan: function applyZoomPan(zoomLevel, panX, panY, allowRenderResolution) {\n _panOffset.x = panX;\n _panOffset.y = panY;\n _currZoomLevel = zoomLevel;\n\n _applyCurrentZoomPan(allowRenderResolution);\n },\n init: function init() {\n if (_isOpen || _isDestroying) {\n return;\n }\n\n var i;\n self.framework = framework; // basic functionality\n\n self.template = template; // root DOM element of PhotoSwipe\n\n self.bg = framework.getChildByClass(template, 'pswp__bg');\n _initalClassName = template.className;\n _isOpen = true;\n _features = framework.detectFeatures();\n _requestAF = _features.raf;\n _cancelAF = _features.caf;\n _transformKey = _features.transform;\n _oldIE = _features.oldIE;\n self.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');\n self.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');\n _containerStyle = self.container.style; // for fast access\n // Objects that hold slides (there are only 3 in DOM)\n\n self.itemHolders = _itemHolders = [{\n el: self.container.children[0],\n wrap: 0,\n index: -1\n }, {\n el: self.container.children[1],\n wrap: 0,\n index: -1\n }, {\n el: self.container.children[2],\n wrap: 0,\n index: -1\n }]; // hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\n _itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';\n\n _setupTransforms(); // Setup global events\n\n\n _globalEventHandlers = {\n resize: self.updateSize,\n // Fixes: iOS 10.3 resize event\n // does not update scrollWrap.clientWidth instantly after resize\n // https://github.com/dimsemenov/PhotoSwipe/issues/1315\n orientationchange: function orientationchange() {\n clearTimeout(_orientationChangeTimeout);\n _orientationChangeTimeout = setTimeout(function () {\n if (_viewportSize.x !== self.scrollWrap.clientWidth) {\n self.updateSize();\n }\n }, 500);\n },\n scroll: _updatePageScrollOffset,\n keydown: _onKeyDown,\n click: _onGlobalClick\n }; // disable show/hide effects on old browsers that don't support CSS animations or transforms, \n // old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.\n\n var oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;\n\n if (!_features.animationName || !_features.transform || oldPhone) {\n _options.showAnimationDuration = _options.hideAnimationDuration = 0;\n } // init modules\n\n\n for (i = 0; i < _modules.length; i++) {\n self['init' + _modules[i]]();\n } // init\n\n\n if (UiClass) {\n var ui = self.ui = new UiClass(self, framework);\n ui.init();\n }\n\n _shout('firstUpdate');\n\n _currentItemIndex = _currentItemIndex || _options.index || 0; // validate index\n\n if (isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems()) {\n _currentItemIndex = 0;\n }\n\n self.currItem = _getItemAt(_currentItemIndex);\n\n if (_features.isOldIOSPhone || _features.isOldAndroid) {\n _isFixedPosition = false;\n }\n\n template.setAttribute('aria-hidden', 'false');\n\n if (_options.modal) {\n if (!_isFixedPosition) {\n template.style.position = 'absolute';\n template.style.top = framework.getScrollY() + 'px';\n } else {\n template.style.position = 'fixed';\n }\n }\n\n if (_currentWindowScrollY === undefined) {\n _shout('initialLayout');\n\n _currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();\n } // add classes to root element of PhotoSwipe\n\n\n var rootClasses = 'pswp--open ';\n\n if (_options.mainClass) {\n rootClasses += _options.mainClass + ' ';\n }\n\n if (_options.showHideOpacity) {\n rootClasses += 'pswp--animate_opacity ';\n }\n\n rootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';\n rootClasses += _features.animationName ? ' pswp--css_animation' : '';\n rootClasses += _features.svg ? ' pswp--svg' : '';\n framework.addClass(template, rootClasses);\n self.updateSize(); // initial update\n\n _containerShiftIndex = -1;\n _indexDiff = null;\n\n for (i = 0; i < NUM_HOLDERS; i++) {\n _setTranslateX((i + _containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);\n }\n\n if (!_oldIE) {\n framework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE\n }\n\n _listen('initialZoomInEnd', function () {\n self.setContent(_itemHolders[0], _currentItemIndex - 1);\n self.setContent(_itemHolders[2], _currentItemIndex + 1);\n _itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';\n\n if (_options.focus) {\n // focus causes layout, \n // which causes lag during the animation, \n // that's why we delay it untill the initial zoom transition ends\n template.focus();\n }\n\n _bindEvents();\n }); // set content for center slide (first time)\n\n\n self.setContent(_itemHolders[1], _currentItemIndex);\n self.updateCurrItem();\n\n _shout('afterInit');\n\n if (!_isFixedPosition) {\n // On all versions of iOS lower than 8.0, we check size of viewport every second.\n // \n // This is done to detect when Safari top & bottom bars appear, \n // as this action doesn't trigger any events (like resize). \n // \n // On iOS8 they fixed this.\n // \n // 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.\n _updateSizeInterval = setInterval(function () {\n if (!_numAnimations && !_isDragging && !_isZooming && _currZoomLevel === self.currItem.initialZoomLevel) {\n self.updateSize();\n }\n }, 1000);\n }\n\n framework.addClass(template, 'pswp--visible');\n },\n // Close the gallery, then destroy it\n close: function close() {\n if (!_isOpen) {\n return;\n }\n\n _isOpen = false;\n _isDestroying = true;\n\n _shout('close');\n\n _unbindEvents();\n\n _showOrHide(self.currItem, null, true, self.destroy);\n },\n // destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)\n destroy: function destroy() {\n _shout('destroy');\n\n if (_showOrHideTimeout) {\n clearTimeout(_showOrHideTimeout);\n }\n\n template.setAttribute('aria-hidden', 'true');\n template.className = _initalClassName;\n\n if (_updateSizeInterval) {\n clearInterval(_updateSizeInterval);\n }\n\n framework.unbind(self.scrollWrap, _downEvents, self); // we unbind scroll event at the end, as closing animation may depend on it\n\n framework.unbind(window, 'scroll', self);\n\n _stopDragUpdateLoop();\n\n _stopAllAnimations();\n\n _listeners = null;\n },\n\n /**\n * Pan image to position\n * @param {Number} x \n * @param {Number} y \n * @param {Boolean} force Will ignore bounds if set to true.\n */\n panTo: function panTo(x, y, force) {\n if (!force) {\n if (x > _currPanBounds.min.x) {\n x = _currPanBounds.min.x;\n } else if (x < _currPanBounds.max.x) {\n x = _currPanBounds.max.x;\n }\n\n if (y > _currPanBounds.min.y) {\n y = _currPanBounds.min.y;\n } else if (y < _currPanBounds.max.y) {\n y = _currPanBounds.max.y;\n }\n }\n\n _panOffset.x = x;\n _panOffset.y = y;\n\n _applyCurrentZoomPan();\n },\n handleEvent: function handleEvent(e) {\n e = e || window.event;\n\n if (_globalEventHandlers[e.type]) {\n _globalEventHandlers[e.type](e);\n }\n },\n goTo: function goTo(index) {\n index = _getLoopedId(index);\n var diff = index - _currentItemIndex;\n _indexDiff = diff;\n _currentItemIndex = index;\n self.currItem = _getItemAt(_currentItemIndex);\n _currPositionIndex -= diff;\n\n _moveMainScroll(_slideSize.x * _currPositionIndex);\n\n _stopAllAnimations();\n\n _mainScrollAnimating = false;\n self.updateCurrItem();\n },\n next: function next() {\n self.goTo(_currentItemIndex + 1);\n },\n prev: function prev() {\n self.goTo(_currentItemIndex - 1);\n },\n // update current zoom/pan objects\n updateCurrZoomItem: function updateCurrZoomItem(emulateSetContent) {\n if (emulateSetContent) {\n _shout('beforeChange', 0);\n } // itemHolder[1] is middle (current) item\n\n\n if (_itemHolders[1].el.children.length) {\n var zoomElement = _itemHolders[1].el.children[0];\n\n if (framework.hasClass(zoomElement, 'pswp__zoom-wrap')) {\n _currZoomElementStyle = zoomElement.style;\n } else {\n _currZoomElementStyle = null;\n }\n } else {\n _currZoomElementStyle = null;\n }\n\n _currPanBounds = self.currItem.bounds;\n _startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n _panOffset.x = _currPanBounds.center.x;\n _panOffset.y = _currPanBounds.center.y;\n\n if (emulateSetContent) {\n _shout('afterChange');\n }\n },\n invalidateCurrItems: function invalidateCurrItems() {\n _itemsNeedUpdate = true;\n\n for (var i = 0; i < NUM_HOLDERS; i++) {\n if (_itemHolders[i].item) {\n _itemHolders[i].item.needsUpdate = true;\n }\n }\n },\n updateCurrItem: function updateCurrItem(beforeAnimation) {\n if (_indexDiff === 0) {\n return;\n }\n\n var diffAbs = Math.abs(_indexDiff),\n tempHolder;\n\n if (beforeAnimation && diffAbs < 2) {\n return;\n }\n\n self.currItem = _getItemAt(_currentItemIndex);\n _renderMaxResolution = false;\n\n _shout('beforeChange', _indexDiff);\n\n if (diffAbs >= NUM_HOLDERS) {\n _containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);\n diffAbs = NUM_HOLDERS;\n }\n\n for (var i = 0; i < diffAbs; i++) {\n if (_indexDiff > 0) {\n tempHolder = _itemHolders.shift();\n _itemHolders[NUM_HOLDERS - 1] = tempHolder; // move first to last\n\n _containerShiftIndex++;\n\n _setTranslateX((_containerShiftIndex + 2) * _slideSize.x, tempHolder.el.style);\n\n self.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);\n } else {\n tempHolder = _itemHolders.pop();\n\n _itemHolders.unshift(tempHolder); // move last to first\n\n\n _containerShiftIndex--;\n\n _setTranslateX(_containerShiftIndex * _slideSize.x, tempHolder.el.style);\n\n self.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);\n }\n } // reset zoom/pan on previous item\n\n\n if (_currZoomElementStyle && Math.abs(_indexDiff) === 1) {\n var prevItem = _getItemAt(_prevItemIndex);\n\n if (prevItem.initialZoomLevel !== _currZoomLevel) {\n _calculateItemSize(prevItem, _viewportSize);\n\n _setImageSize(prevItem);\n\n _applyZoomPanToItem(prevItem);\n }\n } // reset diff after update\n\n\n _indexDiff = 0;\n self.updateCurrZoomItem();\n _prevItemIndex = _currentItemIndex;\n\n _shout('afterChange');\n },\n updateSize: function updateSize(force) {\n if (!_isFixedPosition && _options.modal) {\n var windowScrollY = framework.getScrollY();\n\n if (_currentWindowScrollY !== windowScrollY) {\n template.style.top = windowScrollY + 'px';\n _currentWindowScrollY = windowScrollY;\n }\n\n if (!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {\n return;\n }\n\n _windowVisibleSize.x = window.innerWidth;\n _windowVisibleSize.y = window.innerHeight; //template.style.width = _windowVisibleSize.x + 'px';\n\n template.style.height = _windowVisibleSize.y + 'px';\n }\n\n _viewportSize.x = self.scrollWrap.clientWidth;\n _viewportSize.y = self.scrollWrap.clientHeight;\n\n _updatePageScrollOffset();\n\n _slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);\n _slideSize.y = _viewportSize.y;\n\n _moveMainScroll(_slideSize.x * _currPositionIndex);\n\n _shout('beforeResize'); // even may be used for example to switch image sources\n // don't re-calculate size on inital size update\n\n\n if (_containerShiftIndex !== undefined) {\n var holder, item, hIndex;\n\n for (var i = 0; i < NUM_HOLDERS; i++) {\n holder = _itemHolders[i];\n\n _setTranslateX((i + _containerShiftIndex) * _slideSize.x, holder.el.style);\n\n hIndex = _currentItemIndex + i - 1;\n\n if (_options.loop && _getNumItems() > 2) {\n hIndex = _getLoopedId(hIndex);\n } // update zoom level on items and refresh source (if needsUpdate)\n\n\n item = _getItemAt(hIndex); // re-render gallery item if `needsUpdate`,\n // or doesn't have `bounds` (entirely new slide object)\n\n if (item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds)) {\n self.cleanSlide(item);\n self.setContent(holder, hIndex); // if \"center\" slide\n\n if (i === 1) {\n self.currItem = item;\n self.updateCurrZoomItem(true);\n }\n\n item.needsUpdate = false;\n } else if (holder.index === -1 && hIndex >= 0) {\n // add content first time\n self.setContent(holder, hIndex);\n }\n\n if (item && item.container) {\n _calculateItemSize(item, _viewportSize);\n\n _setImageSize(item);\n\n _applyZoomPanToItem(item);\n }\n }\n\n _itemsNeedUpdate = false;\n }\n\n _startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;\n _currPanBounds = self.currItem.bounds;\n\n if (_currPanBounds) {\n _panOffset.x = _currPanBounds.center.x;\n _panOffset.y = _currPanBounds.center.y;\n\n _applyCurrentZoomPan(true);\n }\n\n _shout('resize');\n },\n // Zoom current item to\n zoomTo: function zoomTo(destZoomLevel, centerPoint, speed, easingFn, updateFn) {\n /*\n \tif(destZoomLevel === 'fit') {\n \t\tdestZoomLevel = self.currItem.fitRatio;\n \t} else if(destZoomLevel === 'fill') {\n \t\tdestZoomLevel = self.currItem.fillRatio;\n \t}\n */\n if (centerPoint) {\n _startZoomLevel = _currZoomLevel;\n _midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x;\n _midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y;\n\n _equalizePoints(_startPanOffset, _panOffset);\n }\n\n var destPanBounds = _calculatePanBounds(destZoomLevel, false),\n destPanOffset = {};\n\n _modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);\n\n _modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);\n\n var initialZoomLevel = _currZoomLevel;\n var initialPanOffset = {\n x: _panOffset.x,\n y: _panOffset.y\n };\n\n _roundPoint(destPanOffset);\n\n var onUpdate = function onUpdate(now) {\n if (now === 1) {\n _currZoomLevel = destZoomLevel;\n _panOffset.x = destPanOffset.x;\n _panOffset.y = destPanOffset.y;\n } else {\n _currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n _panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;\n _panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;\n }\n\n if (updateFn) {\n updateFn(now);\n }\n\n _applyCurrentZoomPan(now === 1);\n };\n\n if (speed) {\n _animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);\n } else {\n onUpdate(1);\n }\n }\n };\n /*>>core*/\n\n /*>>gestures*/\n\n /**\n * Mouse/touch/pointer event handlers.\n * \n * separated from @core.js for readability\n */\n\n var MIN_SWIPE_DISTANCE = 30,\n DIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe\n\n var _gestureStartTime,\n _gestureCheckSpeedTime,\n // pool of objects that are used during dragging of zooming\n p = {},\n // first point\n p2 = {},\n // second point (for zoom gesture)\n delta = {},\n _currPoint = {},\n _startPoint = {},\n _currPointers = [],\n _startMainScrollPos = {},\n _releaseAnimData,\n _posPoints = [],\n // array of points during dragging, used to determine type of gesture\n _tempPoint = {},\n _isZoomingIn,\n _verticalDragInitiated,\n _oldAndroidTouchEndTimeout,\n _currZoomedItemIndex = 0,\n _centerPoint = _getEmptyPoint(),\n _lastReleaseTime = 0,\n _isDragging,\n // at least one pointer is down\n _isMultitouch,\n // at least two _pointers are down\n _zoomStarted,\n // zoom level changed during zoom gesture\n _moved,\n _dragAnimFrame,\n _mainScrollShifted,\n _currentPoints,\n // array of current touch points\n _isZooming,\n _currPointsDistance,\n _startPointsDistance,\n _currPanBounds,\n _mainScrollPos = _getEmptyPoint(),\n _currZoomElementStyle,\n _mainScrollAnimating,\n // true, if animation after swipe gesture is running\n _midZoomPoint = _getEmptyPoint(),\n _currCenterPoint = _getEmptyPoint(),\n _direction,\n _isFirstMove,\n _opacityChanged,\n _bgOpacity,\n _wasOverInitialZoom,\n _isEqualPoints = function _isEqualPoints(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n },\n _isNearbyPoints = function _isNearbyPoints(touch0, touch1) {\n return Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;\n },\n _calculatePointsDistance = function _calculatePointsDistance(p1, p2) {\n _tempPoint.x = Math.abs(p1.x - p2.x);\n _tempPoint.y = Math.abs(p1.y - p2.y);\n return Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);\n },\n _stopDragUpdateLoop = function _stopDragUpdateLoop() {\n if (_dragAnimFrame) {\n _cancelAF(_dragAnimFrame);\n\n _dragAnimFrame = null;\n }\n },\n _dragUpdateLoop = function _dragUpdateLoop() {\n if (_isDragging) {\n _dragAnimFrame = _requestAF(_dragUpdateLoop);\n\n _renderMovement();\n }\n },\n _canPan = function _canPan() {\n return !(_options.scaleMode === 'fit' && _currZoomLevel === self.currItem.initialZoomLevel);\n },\n // find the closest parent DOM element\n _closestElement = function _closestElement(el, fn) {\n if (!el || el === document) {\n return false;\n } // don't search elements above pswp__scroll-wrap\n\n\n if (el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1) {\n return false;\n }\n\n if (fn(el)) {\n return el;\n }\n\n return _closestElement(el.parentNode, fn);\n },\n _preventObj = {},\n _preventDefaultEventBehaviour = function _preventDefaultEventBehaviour(e, isDown) {\n _preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);\n\n _shout('preventDragEvent', e, isDown, _preventObj);\n\n return _preventObj.prevent;\n },\n _convertTouchToPoint = function _convertTouchToPoint(touch, p) {\n p.x = touch.pageX;\n p.y = touch.pageY;\n p.id = touch.identifier;\n return p;\n },\n _findCenterOfPoints = function _findCenterOfPoints(p1, p2, pCenter) {\n pCenter.x = (p1.x + p2.x) * 0.5;\n pCenter.y = (p1.y + p2.y) * 0.5;\n },\n _pushPosPoint = function _pushPosPoint(time, x, y) {\n if (time - _gestureCheckSpeedTime > 50) {\n var o = _posPoints.length > 2 ? _posPoints.shift() : {};\n o.x = x;\n o.y = y;\n\n _posPoints.push(o);\n\n _gestureCheckSpeedTime = time;\n }\n },\n _calculateVerticalDragOpacityRatio = function _calculateVerticalDragOpacityRatio() {\n var yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position\n\n return 1 - Math.abs(yOffset / (_viewportSize.y / 2));\n },\n // points pool, reused during touch events\n _ePoint1 = {},\n _ePoint2 = {},\n _tempPointsArr = [],\n _tempCounter,\n _getTouchPoints = function _getTouchPoints(e) {\n // clean up previous points, without recreating array\n while (_tempPointsArr.length > 0) {\n _tempPointsArr.pop();\n }\n\n if (!_pointerEventEnabled) {\n if (e.type.indexOf('touch') > -1) {\n if (e.touches && e.touches.length > 0) {\n _tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);\n\n if (e.touches.length > 1) {\n _tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);\n }\n }\n } else {\n _ePoint1.x = e.pageX;\n _ePoint1.y = e.pageY;\n _ePoint1.id = '';\n _tempPointsArr[0] = _ePoint1; //_ePoint1;\n }\n } else {\n _tempCounter = 0; // we can use forEach, as pointer events are supported only in modern browsers\n\n _currPointers.forEach(function (p) {\n if (_tempCounter === 0) {\n _tempPointsArr[0] = p;\n } else if (_tempCounter === 1) {\n _tempPointsArr[1] = p;\n }\n\n _tempCounter++;\n });\n }\n\n return _tempPointsArr;\n },\n _panOrMoveMainScroll = function _panOrMoveMainScroll(axis, delta) {\n var panFriction,\n overDiff = 0,\n newOffset = _panOffset[axis] + delta[axis],\n startOverDiff,\n dir = delta[axis] > 0,\n newMainScrollPosition = _mainScrollPos.x + delta.x,\n mainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,\n newPanPos,\n newMainScrollPos; // calculate fdistance over the bounds and friction\n\n if (newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {\n panFriction = _options.panEndFriction; // Linear increasing of friction, so at 1/4 of viewport it's at max value. \n // Looks not as nice as was expected. Left for history.\n // panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );\n } else {\n panFriction = 1;\n }\n\n newOffset = _panOffset[axis] + delta[axis] * panFriction; // move main scroll or start panning\n\n if (_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {\n if (!_currZoomElementStyle) {\n newMainScrollPos = newMainScrollPosition;\n } else if (_direction === 'h' && axis === 'x' && !_zoomStarted) {\n if (dir) {\n if (newOffset > _currPanBounds.min[axis]) {\n panFriction = _options.panEndFriction;\n overDiff = _currPanBounds.min[axis] - newOffset;\n startOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];\n } // drag right\n\n\n if ((startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1) {\n newMainScrollPos = newMainScrollPosition;\n\n if (mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {\n newMainScrollPos = _startMainScrollPos.x;\n }\n } else {\n if (_currPanBounds.min.x !== _currPanBounds.max.x) {\n newPanPos = newOffset;\n }\n }\n } else {\n if (newOffset < _currPanBounds.max[axis]) {\n panFriction = _options.panEndFriction;\n overDiff = newOffset - _currPanBounds.max[axis];\n startOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];\n }\n\n if ((startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1) {\n newMainScrollPos = newMainScrollPosition;\n\n if (mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {\n newMainScrollPos = _startMainScrollPos.x;\n }\n } else {\n if (_currPanBounds.min.x !== _currPanBounds.max.x) {\n newPanPos = newOffset;\n }\n }\n } //\n\n }\n\n if (axis === 'x') {\n if (newMainScrollPos !== undefined) {\n _moveMainScroll(newMainScrollPos, true);\n\n if (newMainScrollPos === _startMainScrollPos.x) {\n _mainScrollShifted = false;\n } else {\n _mainScrollShifted = true;\n }\n }\n\n if (_currPanBounds.min.x !== _currPanBounds.max.x) {\n if (newPanPos !== undefined) {\n _panOffset.x = newPanPos;\n } else if (!_mainScrollShifted) {\n _panOffset.x += delta.x * panFriction;\n }\n }\n\n return newMainScrollPos !== undefined;\n }\n }\n\n if (!_mainScrollAnimating) {\n if (!_mainScrollShifted) {\n if (_currZoomLevel > self.currItem.fitRatio) {\n _panOffset[axis] += delta[axis] * panFriction;\n }\n }\n }\n },\n // Pointerdown/touchstart/mousedown handler\n _onDragStart = function _onDragStart(e) {\n // Allow dragging only via left mouse button.\n // As this handler is not added in IE8 - we ignore e.which\n // \n // http://www.quirksmode.org/js/events_properties.html\n // https://developer.mozilla.org/en-US/docs/Web/API/event.button\n if (e.type === 'mousedown' && e.button > 0) {\n return;\n }\n\n if (_initialZoomRunning) {\n e.preventDefault();\n return;\n }\n\n if (_oldAndroidTouchEndTimeout && e.type === 'mousedown') {\n return;\n }\n\n if (_preventDefaultEventBehaviour(e, true)) {\n e.preventDefault();\n }\n\n _shout('pointerDown');\n\n if (_pointerEventEnabled) {\n var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\n if (pointerIndex < 0) {\n pointerIndex = _currPointers.length;\n }\n\n _currPointers[pointerIndex] = {\n x: e.pageX,\n y: e.pageY,\n id: e.pointerId\n };\n }\n\n var startPointsList = _getTouchPoints(e),\n numPoints = startPointsList.length;\n\n _currentPoints = null;\n\n _stopAllAnimations(); // init drag\n\n\n if (!_isDragging || numPoints === 1) {\n _isDragging = _isFirstMove = true;\n framework.bind(window, _upMoveEvents, self);\n _isZoomingIn = _wasOverInitialZoom = _opacityChanged = _verticalDragInitiated = _mainScrollShifted = _moved = _isMultitouch = _zoomStarted = false;\n _direction = null;\n\n _shout('firstTouchStart', startPointsList);\n\n _equalizePoints(_startPanOffset, _panOffset);\n\n _currPanDist.x = _currPanDist.y = 0;\n\n _equalizePoints(_currPoint, startPointsList[0]);\n\n _equalizePoints(_startPoint, _currPoint); //_equalizePoints(_startMainScrollPos, _mainScrollPos);\n\n\n _startMainScrollPos.x = _slideSize.x * _currPositionIndex;\n _posPoints = [{\n x: _currPoint.x,\n y: _currPoint.y\n }];\n _gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime(); //_mainScrollAnimationEnd(true);\n\n _calculatePanBounds(_currZoomLevel, true); // Start rendering\n\n\n _stopDragUpdateLoop();\n\n _dragUpdateLoop();\n } // init zoom\n\n\n if (!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {\n _startZoomLevel = _currZoomLevel;\n _zoomStarted = false; // true if zoom changed at least once\n\n _isZooming = _isMultitouch = true;\n _currPanDist.y = _currPanDist.x = 0;\n\n _equalizePoints(_startPanOffset, _panOffset);\n\n _equalizePoints(p, startPointsList[0]);\n\n _equalizePoints(p2, startPointsList[1]);\n\n _findCenterOfPoints(p, p2, _currCenterPoint);\n\n _midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;\n _midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;\n _currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);\n }\n },\n // Pointermove/touchmove/mousemove handler\n _onDragMove = function _onDragMove(e) {\n e.preventDefault();\n\n if (_pointerEventEnabled) {\n var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\n if (pointerIndex > -1) {\n var p = _currPointers[pointerIndex];\n p.x = e.pageX;\n p.y = e.pageY;\n }\n }\n\n if (_isDragging) {\n var touchesList = _getTouchPoints(e);\n\n if (!_direction && !_moved && !_isZooming) {\n if (_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {\n // if main scroll position is shifted – direction is always horizontal\n _direction = 'h';\n } else {\n var diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y); // check the direction of movement\n\n if (Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {\n _direction = diff > 0 ? 'h' : 'v';\n _currentPoints = touchesList;\n }\n }\n } else {\n _currentPoints = touchesList;\n }\n }\n },\n // \n _renderMovement = function _renderMovement() {\n if (!_currentPoints) {\n return;\n }\n\n var numPoints = _currentPoints.length;\n\n if (numPoints === 0) {\n return;\n }\n\n _equalizePoints(p, _currentPoints[0]);\n\n delta.x = p.x - _currPoint.x;\n delta.y = p.y - _currPoint.y;\n\n if (_isZooming && numPoints > 1) {\n // Handle behaviour for more than 1 point\n _currPoint.x = p.x;\n _currPoint.y = p.y; // check if one of two points changed\n\n if (!delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2)) {\n return;\n }\n\n _equalizePoints(p2, _currentPoints[1]);\n\n if (!_zoomStarted) {\n _zoomStarted = true;\n\n _shout('zoomGestureStarted');\n } // Distance between two points\n\n\n var pointsDistance = _calculatePointsDistance(p, p2);\n\n var zoomLevel = _calculateZoomLevel(pointsDistance); // slightly over the of initial zoom level\n\n\n if (zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {\n _wasOverInitialZoom = true;\n } // Apply the friction if zoom level is out of the bounds\n\n\n var zoomFriction = 1,\n minZoomLevel = _getMinZoomLevel(),\n maxZoomLevel = _getMaxZoomLevel();\n\n if (zoomLevel < minZoomLevel) {\n if (_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {\n // fade out background if zooming out\n var minusDiff = minZoomLevel - zoomLevel;\n var percent = 1 - minusDiff / (minZoomLevel / 1.2);\n\n _applyBgOpacity(percent);\n\n _shout('onPinchClose', percent);\n\n _opacityChanged = true;\n } else {\n zoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;\n\n if (zoomFriction > 1) {\n zoomFriction = 1;\n }\n\n zoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);\n }\n } else if (zoomLevel > maxZoomLevel) {\n // 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5\n zoomFriction = (zoomLevel - maxZoomLevel) / (minZoomLevel * 6);\n\n if (zoomFriction > 1) {\n zoomFriction = 1;\n }\n\n zoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;\n }\n\n if (zoomFriction < 0) {\n zoomFriction = 0;\n } // distance between touch points after friction is applied\n\n\n _currPointsDistance = pointsDistance; // _centerPoint - The point in the middle of two pointers\n\n _findCenterOfPoints(p, p2, _centerPoint); // paning with two pointers pressed\n\n\n _currPanDist.x += _centerPoint.x - _currCenterPoint.x;\n _currPanDist.y += _centerPoint.y - _currCenterPoint.y;\n\n _equalizePoints(_currCenterPoint, _centerPoint);\n\n _panOffset.x = _calculatePanOffset('x', zoomLevel);\n _panOffset.y = _calculatePanOffset('y', zoomLevel);\n _isZoomingIn = zoomLevel > _currZoomLevel;\n _currZoomLevel = zoomLevel;\n\n _applyCurrentZoomPan();\n } else {\n // handle behaviour for one point (dragging or panning)\n if (!_direction) {\n return;\n }\n\n if (_isFirstMove) {\n _isFirstMove = false; // subtract drag distance that was used during the detection direction \n\n if (Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {\n delta.x -= _currentPoints[0].x - _startPoint.x;\n }\n\n if (Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {\n delta.y -= _currentPoints[0].y - _startPoint.y;\n }\n }\n\n _currPoint.x = p.x;\n _currPoint.y = p.y; // do nothing if pointers position hasn't changed\n\n if (delta.x === 0 && delta.y === 0) {\n return;\n }\n\n if (_direction === 'v' && _options.closeOnVerticalDrag) {\n if (!_canPan()) {\n _currPanDist.y += delta.y;\n _panOffset.y += delta.y;\n\n var opacityRatio = _calculateVerticalDragOpacityRatio();\n\n _verticalDragInitiated = true;\n\n _shout('onVerticalDrag', opacityRatio);\n\n _applyBgOpacity(opacityRatio);\n\n _applyCurrentZoomPan();\n\n return;\n }\n }\n\n _pushPosPoint(_getCurrentTime(), p.x, p.y);\n\n _moved = true;\n _currPanBounds = self.currItem.bounds;\n\n var mainScrollChanged = _panOrMoveMainScroll('x', delta);\n\n if (!mainScrollChanged) {\n _panOrMoveMainScroll('y', delta);\n\n _roundPoint(_panOffset);\n\n _applyCurrentZoomPan();\n }\n }\n },\n // Pointerup/pointercancel/touchend/touchcancel/mouseup event handler\n _onDragRelease = function _onDragRelease(e) {\n if (_features.isOldAndroid) {\n if (_oldAndroidTouchEndTimeout && e.type === 'mouseup') {\n return;\n } // on Android (v4.1, 4.2, 4.3 & possibly older) \n // ghost mousedown/up event isn't preventable via e.preventDefault,\n // which causes fake mousedown event\n // so we block mousedown/up for 600ms\n\n\n if (e.type.indexOf('touch') > -1) {\n clearTimeout(_oldAndroidTouchEndTimeout);\n _oldAndroidTouchEndTimeout = setTimeout(function () {\n _oldAndroidTouchEndTimeout = 0;\n }, 600);\n }\n }\n\n _shout('pointerUp');\n\n if (_preventDefaultEventBehaviour(e, false)) {\n e.preventDefault();\n }\n\n var releasePoint;\n\n if (_pointerEventEnabled) {\n var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');\n\n if (pointerIndex > -1) {\n releasePoint = _currPointers.splice(pointerIndex, 1)[0];\n\n if (navigator.msPointerEnabled) {\n var MSPOINTER_TYPES = {\n 4: 'mouse',\n // event.MSPOINTER_TYPE_MOUSE\n 2: 'touch',\n // event.MSPOINTER_TYPE_TOUCH \n 3: 'pen' // event.MSPOINTER_TYPE_PEN\n\n };\n releasePoint.type = MSPOINTER_TYPES[e.pointerType];\n\n if (!releasePoint.type) {\n releasePoint.type = e.pointerType || 'mouse';\n }\n } else {\n releasePoint.type = e.pointerType || 'mouse';\n }\n }\n }\n\n var touchList = _getTouchPoints(e),\n gestureType,\n numPoints = touchList.length;\n\n if (e.type === 'mouseup') {\n numPoints = 0;\n } // Do nothing if there were 3 touch points or more\n\n\n if (numPoints === 2) {\n _currentPoints = null;\n return true;\n } // if second pointer released\n\n\n if (numPoints === 1) {\n _equalizePoints(_startPoint, touchList[0]);\n } // pointer hasn't moved, send \"tap release\" point\n\n\n if (numPoints === 0 && !_direction && !_mainScrollAnimating) {\n if (!releasePoint) {\n if (e.type === 'mouseup') {\n releasePoint = {\n x: e.pageX,\n y: e.pageY,\n type: 'mouse'\n };\n } else if (e.changedTouches && e.changedTouches[0]) {\n releasePoint = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n type: 'touch'\n };\n }\n }\n\n _shout('touchRelease', e, releasePoint);\n } // Difference in time between releasing of two last touch points (zoom gesture)\n\n\n var releaseTimeDiff = -1; // Gesture completed, no pointers left\n\n if (numPoints === 0) {\n _isDragging = false;\n framework.unbind(window, _upMoveEvents, self);\n\n _stopDragUpdateLoop();\n\n if (_isZooming) {\n // Two points released at the same time\n releaseTimeDiff = 0;\n } else if (_lastReleaseTime !== -1) {\n releaseTimeDiff = _getCurrentTime() - _lastReleaseTime;\n }\n }\n\n _lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;\n\n if (releaseTimeDiff !== -1 && releaseTimeDiff < 150) {\n gestureType = 'zoom';\n } else {\n gestureType = 'swipe';\n }\n\n if (_isZooming && numPoints < 2) {\n _isZooming = false; // Only second point released\n\n if (numPoints === 1) {\n gestureType = 'zoomPointerUp';\n }\n\n _shout('zoomGestureEnded');\n }\n\n _currentPoints = null;\n\n if (!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {\n // nothing to animate\n return;\n }\n\n _stopAllAnimations();\n\n if (!_releaseAnimData) {\n _releaseAnimData = _initDragReleaseAnimationData();\n }\n\n _releaseAnimData.calculateSwipeSpeed('x');\n\n if (_verticalDragInitiated) {\n var opacityRatio = _calculateVerticalDragOpacityRatio();\n\n if (opacityRatio < _options.verticalDragRange) {\n self.close();\n } else {\n var initalPanY = _panOffset.y,\n initialBgOpacity = _bgOpacity;\n\n _animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function (now) {\n _panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;\n\n _applyBgOpacity((1 - initialBgOpacity) * now + initialBgOpacity);\n\n _applyCurrentZoomPan();\n });\n\n _shout('onVerticalDrag', 1);\n }\n\n return;\n } // main scroll \n\n\n if ((_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {\n var itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);\n\n if (itemChanged) {\n return;\n }\n\n gestureType = 'zoomPointerUp';\n } // prevent zoom/pan animation when main scroll animation runs\n\n\n if (_mainScrollAnimating) {\n return;\n } // Complete simple zoom gesture (reset zoom level if it's out of the bounds) \n\n\n if (gestureType !== 'swipe') {\n _completeZoomGesture();\n\n return;\n } // Complete pan gesture if main scroll is not shifted, and it's possible to pan current image\n\n\n if (!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {\n _completePanGesture(_releaseAnimData);\n }\n },\n // Returns object with data about gesture\n // It's created only once and then reused\n _initDragReleaseAnimationData = function _initDragReleaseAnimationData() {\n // temp local vars\n var lastFlickDuration, tempReleasePos; // s = this\n\n var s = {\n lastFlickOffset: {},\n lastFlickDist: {},\n lastFlickSpeed: {},\n slowDownRatio: {},\n slowDownRatioReverse: {},\n speedDecelerationRatio: {},\n speedDecelerationRatioAbs: {},\n distanceOffset: {},\n backAnimDestination: {},\n backAnimStarted: {},\n calculateSwipeSpeed: function calculateSwipeSpeed(axis) {\n if (_posPoints.length > 1) {\n lastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;\n tempReleasePos = _posPoints[_posPoints.length - 2][axis];\n } else {\n lastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration\n\n tempReleasePos = _startPoint[axis];\n }\n\n s.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;\n s.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);\n\n if (s.lastFlickDist[axis] > 20) {\n s.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;\n } else {\n s.lastFlickSpeed[axis] = 0;\n }\n\n if (Math.abs(s.lastFlickSpeed[axis]) < 0.1) {\n s.lastFlickSpeed[axis] = 0;\n }\n\n s.slowDownRatio[axis] = 0.95;\n s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n s.speedDecelerationRatio[axis] = 1;\n },\n calculateOverBoundsAnimOffset: function calculateOverBoundsAnimOffset(axis, speed) {\n if (!s.backAnimStarted[axis]) {\n if (_panOffset[axis] > _currPanBounds.min[axis]) {\n s.backAnimDestination[axis] = _currPanBounds.min[axis];\n } else if (_panOffset[axis] < _currPanBounds.max[axis]) {\n s.backAnimDestination[axis] = _currPanBounds.max[axis];\n }\n\n if (s.backAnimDestination[axis] !== undefined) {\n s.slowDownRatio[axis] = 0.7;\n s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];\n\n if (s.speedDecelerationRatioAbs[axis] < 0.05) {\n s.lastFlickSpeed[axis] = 0;\n s.backAnimStarted[axis] = true;\n\n _animateProp('bounceZoomPan' + axis, _panOffset[axis], s.backAnimDestination[axis], speed || 300, framework.easing.sine.out, function (pos) {\n _panOffset[axis] = pos;\n\n _applyCurrentZoomPan();\n });\n }\n }\n }\n },\n // Reduces the speed by slowDownRatio (per 10ms)\n calculateAnimOffset: function calculateAnimOffset(axis) {\n if (!s.backAnimStarted[axis]) {\n s.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] + s.slowDownRatioReverse[axis] - s.slowDownRatioReverse[axis] * s.timeDiff / 10);\n s.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);\n s.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;\n _panOffset[axis] += s.distanceOffset[axis];\n }\n },\n panAnimLoop: function panAnimLoop() {\n if (_animations.zoomPan) {\n _animations.zoomPan.raf = _requestAF(s.panAnimLoop);\n s.now = _getCurrentTime();\n s.timeDiff = s.now - s.lastNow;\n s.lastNow = s.now;\n s.calculateAnimOffset('x');\n s.calculateAnimOffset('y');\n\n _applyCurrentZoomPan();\n\n s.calculateOverBoundsAnimOffset('x');\n s.calculateOverBoundsAnimOffset('y');\n\n if (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {\n // round pan position\n _panOffset.x = Math.round(_panOffset.x);\n _panOffset.y = Math.round(_panOffset.y);\n\n _applyCurrentZoomPan();\n\n _stopAnimation('zoomPan');\n\n return;\n }\n }\n }\n };\n return s;\n },\n _completePanGesture = function _completePanGesture(animData) {\n // calculate swipe speed for Y axis (paanning)\n animData.calculateSwipeSpeed('y');\n _currPanBounds = self.currItem.bounds;\n animData.backAnimDestination = {};\n animData.backAnimStarted = {}; // Avoid acceleration animation if speed is too low\n\n if (Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05) {\n animData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0; // Run pan drag release animation. E.g. if you drag image and release finger without momentum.\n\n animData.calculateOverBoundsAnimOffset('x');\n animData.calculateOverBoundsAnimOffset('y');\n return true;\n } // Animation loop that controls the acceleration after pan gesture ends\n\n\n _registerStartAnimation('zoomPan');\n\n animData.lastNow = _getCurrentTime();\n animData.panAnimLoop();\n },\n _finishSwipeMainScrollGesture = function _finishSwipeMainScrollGesture(gestureType, _releaseAnimData) {\n var itemChanged;\n\n if (!_mainScrollAnimating) {\n _currZoomedItemIndex = _currentItemIndex;\n }\n\n var itemsDiff;\n\n if (gestureType === 'swipe') {\n var totalShiftDist = _currPoint.x - _startPoint.x,\n isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10; // if container is shifted for more than MIN_SWIPE_DISTANCE, \n // and last flick gesture was in right direction\n\n if (totalShiftDist > MIN_SWIPE_DISTANCE && (isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20)) {\n // go to prev item\n itemsDiff = -1;\n } else if (totalShiftDist < -MIN_SWIPE_DISTANCE && (isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20)) {\n // go to next item\n itemsDiff = 1;\n }\n }\n\n var nextCircle;\n\n if (itemsDiff) {\n _currentItemIndex += itemsDiff;\n\n if (_currentItemIndex < 0) {\n _currentItemIndex = _options.loop ? _getNumItems() - 1 : 0;\n nextCircle = true;\n } else if (_currentItemIndex >= _getNumItems()) {\n _currentItemIndex = _options.loop ? 0 : _getNumItems() - 1;\n nextCircle = true;\n }\n\n if (!nextCircle || _options.loop) {\n _indexDiff += itemsDiff;\n _currPositionIndex -= itemsDiff;\n itemChanged = true;\n }\n }\n\n var animateToX = _slideSize.x * _currPositionIndex;\n var animateToDist = Math.abs(animateToX - _mainScrollPos.x);\n var finishAnimDuration;\n\n if (!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {\n // \"return to current\" duration, e.g. when dragging from slide 0 to -1\n finishAnimDuration = 333;\n } else {\n finishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ? animateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) : 333;\n finishAnimDuration = Math.min(finishAnimDuration, 400);\n finishAnimDuration = Math.max(finishAnimDuration, 250);\n }\n\n if (_currZoomedItemIndex === _currentItemIndex) {\n itemChanged = false;\n }\n\n _mainScrollAnimating = true;\n\n _shout('mainScrollAnimStart');\n\n _animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out, _moveMainScroll, function () {\n _stopAllAnimations();\n\n _mainScrollAnimating = false;\n _currZoomedItemIndex = -1;\n\n if (itemChanged || _currZoomedItemIndex !== _currentItemIndex) {\n self.updateCurrItem();\n }\n\n _shout('mainScrollAnimComplete');\n });\n\n if (itemChanged) {\n self.updateCurrItem(true);\n }\n\n return itemChanged;\n },\n _calculateZoomLevel = function _calculateZoomLevel(touchesDistance) {\n return 1 / _startPointsDistance * touchesDistance * _startZoomLevel;\n },\n // Resets zoom if it's out of bounds\n _completeZoomGesture = function _completeZoomGesture() {\n var destZoomLevel = _currZoomLevel,\n minZoomLevel = _getMinZoomLevel(),\n maxZoomLevel = _getMaxZoomLevel();\n\n if (_currZoomLevel < minZoomLevel) {\n destZoomLevel = minZoomLevel;\n } else if (_currZoomLevel > maxZoomLevel) {\n destZoomLevel = maxZoomLevel;\n }\n\n var destOpacity = 1,\n onUpdate,\n initialOpacity = _bgOpacity;\n\n if (_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {\n //_closedByScroll = true;\n self.close();\n return true;\n }\n\n if (_opacityChanged) {\n onUpdate = function onUpdate(now) {\n _applyBgOpacity((destOpacity - initialOpacity) * now + initialOpacity);\n };\n }\n\n self.zoomTo(destZoomLevel, 0, 200, framework.easing.cubic.out, onUpdate);\n return true;\n };\n\n _registerModule('Gestures', {\n publicMethods: {\n initGestures: function initGestures() {\n // helper function that builds touch/pointer/mouse events\n var addEventNames = function addEventNames(pref, down, move, up, cancel) {\n _dragStartEvent = pref + down;\n _dragMoveEvent = pref + move;\n _dragEndEvent = pref + up;\n\n if (cancel) {\n _dragCancelEvent = pref + cancel;\n } else {\n _dragCancelEvent = '';\n }\n };\n\n _pointerEventEnabled = _features.pointerEvent;\n\n if (_pointerEventEnabled && _features.touch) {\n // we don't need touch events, if browser supports pointer events\n _features.touch = false;\n }\n\n if (_pointerEventEnabled) {\n if (navigator.msPointerEnabled) {\n // IE10 pointer events are case-sensitive\n addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');\n } else {\n addEventNames('pointer', 'down', 'move', 'up', 'cancel');\n }\n } else if (_features.touch) {\n addEventNames('touch', 'start', 'move', 'end', 'cancel');\n _likelyTouchDevice = true;\n } else {\n addEventNames('mouse', 'down', 'move', 'up');\n }\n\n _upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent + ' ' + _dragCancelEvent;\n _downEvents = _dragStartEvent;\n\n if (_pointerEventEnabled && !_likelyTouchDevice) {\n _likelyTouchDevice = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1;\n } // make variable public\n\n\n self.likelyTouchDevice = _likelyTouchDevice;\n _globalEventHandlers[_dragStartEvent] = _onDragStart;\n _globalEventHandlers[_dragMoveEvent] = _onDragMove;\n _globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken\n\n if (_dragCancelEvent) {\n _globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];\n } // Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.\n\n\n if (_features.touch) {\n _downEvents += ' mousedown';\n _upMoveEvents += ' mousemove mouseup';\n _globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];\n _globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];\n _globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];\n }\n\n if (!_likelyTouchDevice) {\n // don't allow pan to next slide from zoomed state on Desktop\n _options.allowPanToNext = false;\n }\n }\n }\n });\n /*>>gestures*/\n\n /*>>show-hide-transition*/\n\n /**\n * show-hide-transition.js:\n *\n * Manages initial opening or closing transition.\n *\n * If you're not planning to use transition for gallery at all,\n * you may set options hideAnimationDuration and showAnimationDuration to 0,\n * and just delete startAnimation function.\n * \n */\n\n\n var _showOrHideTimeout,\n _showOrHide = function _showOrHide(item, img, out, completeFn) {\n if (_showOrHideTimeout) {\n clearTimeout(_showOrHideTimeout);\n }\n\n _initialZoomRunning = true;\n _initialContentSet = true; // dimensions of small thumbnail {x:,y:,w:}.\n // Height is optional, as calculated based on large image.\n\n var thumbBounds;\n\n if (item.initialLayout) {\n thumbBounds = item.initialLayout;\n item.initialLayout = null;\n } else {\n thumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n }\n\n var duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;\n\n var onComplete = function onComplete() {\n _stopAnimation('initialZoom');\n\n if (!out) {\n _applyBgOpacity(1);\n\n if (img) {\n img.style.display = 'block';\n }\n\n framework.addClass(template, 'pswp--animated-in');\n\n _shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));\n } else {\n self.template.removeAttribute('style');\n self.bg.removeAttribute('style');\n }\n\n if (completeFn) {\n completeFn();\n }\n\n _initialZoomRunning = false;\n }; // if bounds aren't provided, just open gallery without animation\n\n\n if (!duration || !thumbBounds || thumbBounds.x === undefined) {\n _shout('initialZoom' + (out ? 'Out' : 'In'));\n\n _currZoomLevel = item.initialZoomLevel;\n\n _equalizePoints(_panOffset, item.initialPosition);\n\n _applyCurrentZoomPan();\n\n template.style.opacity = out ? 0 : 1;\n\n _applyBgOpacity(1);\n\n if (duration) {\n setTimeout(function () {\n onComplete();\n }, duration);\n } else {\n onComplete();\n }\n\n return;\n }\n\n var startAnimation = function startAnimation() {\n var closeWithRaf = _closedByScroll,\n fadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity; // apply hw-acceleration to image\n\n if (item.miniImg) {\n item.miniImg.style.webkitBackfaceVisibility = 'hidden';\n }\n\n if (!out) {\n _currZoomLevel = thumbBounds.w / item.w;\n _panOffset.x = thumbBounds.x;\n _panOffset.y = thumbBounds.y - _initalWindowScrollY;\n self[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;\n\n _applyCurrentZoomPan();\n }\n\n _registerStartAnimation('initialZoom');\n\n if (out && !closeWithRaf) {\n framework.removeClass(template, 'pswp--animated-in');\n }\n\n if (fadeEverything) {\n if (out) {\n framework[(closeWithRaf ? 'remove' : 'add') + 'Class'](template, 'pswp--animate_opacity');\n } else {\n setTimeout(function () {\n framework.addClass(template, 'pswp--animate_opacity');\n }, 30);\n }\n }\n\n _showOrHideTimeout = setTimeout(function () {\n _shout('initialZoom' + (out ? 'Out' : 'In'));\n\n if (!out) {\n // \"in\" animation always uses CSS transitions (instead of rAF).\n // CSS transition work faster here, \n // as developer may also want to animate other things, \n // like ui on top of sliding area, which can be animated just via CSS\n _currZoomLevel = item.initialZoomLevel;\n\n _equalizePoints(_panOffset, item.initialPosition);\n\n _applyCurrentZoomPan();\n\n _applyBgOpacity(1);\n\n if (fadeEverything) {\n template.style.opacity = 1;\n } else {\n _applyBgOpacity(1);\n }\n\n _showOrHideTimeout = setTimeout(onComplete, duration + 20);\n } else {\n // \"out\" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position\n var destZoomLevel = thumbBounds.w / item.w,\n initialPanOffset = {\n x: _panOffset.x,\n y: _panOffset.y\n },\n initialZoomLevel = _currZoomLevel,\n initalBgOpacity = _bgOpacity,\n onUpdate = function onUpdate(now) {\n if (now === 1) {\n _currZoomLevel = destZoomLevel;\n _panOffset.x = thumbBounds.x;\n _panOffset.y = thumbBounds.y - _currentWindowScrollY;\n } else {\n _currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;\n _panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;\n _panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;\n }\n\n _applyCurrentZoomPan();\n\n if (fadeEverything) {\n template.style.opacity = 1 - now;\n } else {\n _applyBgOpacity(initalBgOpacity - now * initalBgOpacity);\n }\n };\n\n if (closeWithRaf) {\n _animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);\n } else {\n onUpdate(1);\n _showOrHideTimeout = setTimeout(onComplete, duration + 20);\n }\n }\n }, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and\n // create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).\n // Which avoids lag at the beginning of scale transition.\n };\n\n startAnimation();\n };\n /*>>show-hide-transition*/\n\n /*>>items-controller*/\n\n /**\n *\n * Controller manages gallery items, their dimensions, and their content.\n * \n */\n\n\n var _items,\n _tempPanAreaSize = {},\n _imagesToAppendPool = [],\n _initialContentSet,\n _initialZoomRunning,\n _controllerDefaultOptions = {\n index: 0,\n errorMsg: '<div class=\"pswp__error-msg\"><a href=\"%url%\" target=\"_blank\">The image</a> could not be loaded.</div>',\n forceProgressiveLoading: false,\n // TODO\n preload: [1, 1],\n getNumItemsFn: function getNumItemsFn() {\n return _items.length;\n }\n };\n\n var _getItemAt,\n _getNumItems,\n _initialIsLoop,\n _getZeroBounds = function _getZeroBounds() {\n return {\n center: {\n x: 0,\n y: 0\n },\n max: {\n x: 0,\n y: 0\n },\n min: {\n x: 0,\n y: 0\n }\n };\n },\n _calculateSingleItemPanBounds = function _calculateSingleItemPanBounds(item, realPanElementW, realPanElementH) {\n var bounds = item.bounds; // position of element when it's centered\n\n bounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);\n bounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top; // maximum pan position\n\n bounds.max.x = realPanElementW > _tempPanAreaSize.x ? Math.round(_tempPanAreaSize.x - realPanElementW) : bounds.center.x;\n bounds.max.y = realPanElementH > _tempPanAreaSize.y ? Math.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top : bounds.center.y; // minimum pan position\n\n bounds.min.x = realPanElementW > _tempPanAreaSize.x ? 0 : bounds.center.x;\n bounds.min.y = realPanElementH > _tempPanAreaSize.y ? item.vGap.top : bounds.center.y;\n },\n _calculateItemSize = function _calculateItemSize(item, viewportSize, zoomLevel) {\n if (item.src && !item.loadError) {\n var isInitial = !zoomLevel;\n\n if (isInitial) {\n if (!item.vGap) {\n item.vGap = {\n top: 0,\n bottom: 0\n };\n } // allows overriding vertical margin for individual items\n\n\n _shout('parseVerticalMargin', item);\n }\n\n _tempPanAreaSize.x = viewportSize.x;\n _tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;\n\n if (isInitial) {\n var hRatio = _tempPanAreaSize.x / item.w;\n var vRatio = _tempPanAreaSize.y / item.h;\n item.fitRatio = hRatio < vRatio ? hRatio : vRatio; //item.fillRatio = hRatio > vRatio ? hRatio : vRatio;\n\n var scaleMode = _options.scaleMode;\n\n if (scaleMode === 'orig') {\n zoomLevel = 1;\n } else if (scaleMode === 'fit') {\n zoomLevel = item.fitRatio;\n }\n\n if (zoomLevel > 1) {\n zoomLevel = 1;\n }\n\n item.initialZoomLevel = zoomLevel;\n\n if (!item.bounds) {\n // reuse bounds object\n item.bounds = _getZeroBounds();\n }\n }\n\n if (!zoomLevel) {\n return;\n }\n\n _calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);\n\n if (isInitial && zoomLevel === item.initialZoomLevel) {\n item.initialPosition = item.bounds.center;\n }\n\n return item.bounds;\n } else {\n item.w = item.h = 0;\n item.initialZoomLevel = item.fitRatio = 1;\n item.bounds = _getZeroBounds();\n item.initialPosition = item.bounds.center; // if it's not image, we return zero bounds (content is not zoomable)\n\n return item.bounds;\n }\n },\n _appendImage = function _appendImage(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {\n if (item.loadError) {\n return;\n }\n\n if (img) {\n item.imageAppended = true;\n\n _setImageSize(item, img, item === self.currItem && _renderMaxResolution);\n\n baseDiv.appendChild(img);\n\n if (keepPlaceholder) {\n setTimeout(function () {\n if (item && item.loaded && item.placeholder) {\n item.placeholder.style.display = 'none';\n item.placeholder = null;\n }\n }, 500);\n }\n }\n },\n _preloadImage = function _preloadImage(item) {\n item.loading = true;\n item.loaded = false;\n var img = item.img = framework.createEl('pswp__img', 'img');\n\n var onComplete = function onComplete() {\n item.loading = false;\n item.loaded = true;\n\n if (item.loadComplete) {\n item.loadComplete(item);\n } else {\n item.img = null; // no need to store image object\n }\n\n img.onload = img.onerror = null;\n img = null;\n };\n\n img.onload = onComplete;\n\n img.onerror = function () {\n item.loadError = true;\n onComplete();\n };\n\n img.src = item.src; // + '?a=' + Math.random();\n\n return img;\n },\n _checkForError = function _checkForError(item, cleanUp) {\n if (item.src && item.loadError && item.container) {\n if (cleanUp) {\n item.container.innerHTML = '';\n }\n\n item.container.innerHTML = _options.errorMsg.replace('%url%', item.src);\n return true;\n }\n },\n _setImageSize = function _setImageSize(item, img, maxRes) {\n if (!item.src) {\n return;\n }\n\n if (!img) {\n img = item.container.lastChild;\n }\n\n var w = maxRes ? item.w : Math.round(item.w * item.fitRatio),\n h = maxRes ? item.h : Math.round(item.h * item.fitRatio);\n\n if (item.placeholder && !item.loaded) {\n item.placeholder.style.width = w + 'px';\n item.placeholder.style.height = h + 'px';\n }\n\n img.style.width = w + 'px';\n img.style.height = h + 'px';\n },\n _appendImagesPool = function _appendImagesPool() {\n if (_imagesToAppendPool.length) {\n var poolItem;\n\n for (var i = 0; i < _imagesToAppendPool.length; i++) {\n poolItem = _imagesToAppendPool[i];\n\n if (poolItem.holder.index === poolItem.index) {\n _appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);\n }\n }\n\n _imagesToAppendPool = [];\n }\n };\n\n _registerModule('Controller', {\n publicMethods: {\n lazyLoadItem: function lazyLoadItem(index) {\n index = _getLoopedId(index);\n\n var item = _getItemAt(index);\n\n if (!item || (item.loaded || item.loading) && !_itemsNeedUpdate) {\n return;\n }\n\n _shout('gettingData', index, item);\n\n if (!item.src) {\n return;\n }\n\n _preloadImage(item);\n },\n initController: function initController() {\n framework.extend(_options, _controllerDefaultOptions, true);\n self.items = _items = items;\n _getItemAt = self.getItemAt;\n _getNumItems = _options.getNumItemsFn; //self.getNumItems;\n\n _initialIsLoop = _options.loop;\n\n if (_getNumItems() < 3) {\n _options.loop = false; // disable loop if less then 3 items\n }\n\n _listen('beforeChange', function (diff) {\n var p = _options.preload,\n isNext = diff === null ? true : diff >= 0,\n preloadBefore = Math.min(p[0], _getNumItems()),\n preloadAfter = Math.min(p[1], _getNumItems()),\n i;\n\n for (i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {\n self.lazyLoadItem(_currentItemIndex + i);\n }\n\n for (i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {\n self.lazyLoadItem(_currentItemIndex - i);\n }\n });\n\n _listen('initialLayout', function () {\n self.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);\n });\n\n _listen('mainScrollAnimComplete', _appendImagesPool);\n\n _listen('initialZoomInEnd', _appendImagesPool);\n\n _listen('destroy', function () {\n var item;\n\n for (var i = 0; i < _items.length; i++) {\n item = _items[i]; // remove reference to DOM elements, for GC\n\n if (item.container) {\n item.container = null;\n }\n\n if (item.placeholder) {\n item.placeholder = null;\n }\n\n if (item.img) {\n item.img = null;\n }\n\n if (item.preloader) {\n item.preloader = null;\n }\n\n if (item.loadError) {\n item.loaded = item.loadError = false;\n }\n }\n\n _imagesToAppendPool = null;\n });\n },\n getItemAt: function getItemAt(index) {\n if (index >= 0) {\n return _items[index] !== undefined ? _items[index] : false;\n }\n\n return false;\n },\n allowProgressiveImg: function allowProgressiveImg() {\n // 1. Progressive image loading isn't working on webkit/blink \n // when hw-acceleration (e.g. translateZ) is applied to IMG element.\n // That's why in PhotoSwipe parent element gets zoom transform, not image itself.\n // \n // 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.\n // That's why it's disabled on touch devices (mainly because of swipe transition)\n // \n // 3. Progressive image loading sometimes doesn't work in IE (up to 11).\n // Don't allow progressive loading on non-large touch devices\n return _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200; // 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)\n },\n setContent: function setContent(holder, index) {\n if (_options.loop) {\n index = _getLoopedId(index);\n }\n\n var prevItem = self.getItemAt(holder.index);\n\n if (prevItem) {\n prevItem.container = null;\n }\n\n var item = self.getItemAt(index),\n img;\n\n if (!item) {\n holder.el.innerHTML = '';\n return;\n } // allow to override data\n\n\n _shout('gettingData', index, item);\n\n holder.index = index;\n holder.item = item; // base container DIV is created only once for each of 3 holders\n\n var baseDiv = item.container = framework.createEl('pswp__zoom-wrap');\n\n if (!item.src && item.html) {\n if (item.html.tagName) {\n baseDiv.appendChild(item.html);\n } else {\n baseDiv.innerHTML = item.html;\n }\n }\n\n _checkForError(item);\n\n _calculateItemSize(item, _viewportSize);\n\n if (item.src && !item.loadError && !item.loaded) {\n item.loadComplete = function (item) {\n // gallery closed before image finished loading\n if (!_isOpen) {\n return;\n } // check if holder hasn't changed while image was loading\n\n\n if (holder && holder.index === index) {\n if (_checkForError(item, true)) {\n item.loadComplete = item.img = null;\n\n _calculateItemSize(item, _viewportSize);\n\n _applyZoomPanToItem(item);\n\n if (holder.index === _currentItemIndex) {\n // recalculate dimensions\n self.updateCurrZoomItem();\n }\n\n return;\n }\n\n if (!item.imageAppended) {\n if (_features.transform && (_mainScrollAnimating || _initialZoomRunning)) {\n _imagesToAppendPool.push({\n item: item,\n baseDiv: baseDiv,\n img: item.img,\n index: index,\n holder: holder,\n clearPlaceholder: true\n });\n } else {\n _appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);\n }\n } else {\n // remove preloader & mini-img\n if (!_initialZoomRunning && item.placeholder) {\n item.placeholder.style.display = 'none';\n item.placeholder = null;\n }\n }\n }\n\n item.loadComplete = null;\n item.img = null; // no need to store image element after it's added\n\n _shout('imageLoadComplete', index, item);\n };\n\n if (framework.features.transform) {\n var placeholderClassName = 'pswp__img pswp__img--placeholder';\n placeholderClassName += item.msrc ? '' : ' pswp__img--placeholder--blank';\n var placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');\n\n if (item.msrc) {\n placeholder.src = item.msrc;\n }\n\n _setImageSize(item, placeholder);\n\n baseDiv.appendChild(placeholder);\n item.placeholder = placeholder;\n }\n\n if (!item.loading) {\n _preloadImage(item);\n }\n\n if (self.allowProgressiveImg()) {\n // just append image\n if (!_initialContentSet && _features.transform) {\n _imagesToAppendPool.push({\n item: item,\n baseDiv: baseDiv,\n img: item.img,\n index: index,\n holder: holder\n });\n } else {\n _appendImage(index, item, baseDiv, item.img, true, true);\n }\n }\n } else if (item.src && !item.loadError) {\n // image object is created every time, due to bugs of image loading & delay when switching images\n img = framework.createEl('pswp__img', 'img');\n img.style.opacity = 1;\n img.src = item.src;\n\n _setImageSize(item, img);\n\n _appendImage(index, item, baseDiv, img, true);\n }\n\n if (!_initialContentSet && index === _currentItemIndex) {\n _currZoomElementStyle = baseDiv.style;\n\n _showOrHide(item, img || item.img);\n } else {\n _applyZoomPanToItem(item);\n }\n\n holder.el.innerHTML = '';\n holder.el.appendChild(baseDiv);\n },\n cleanSlide: function cleanSlide(item) {\n if (item.img) {\n item.img.onload = item.img.onerror = null;\n }\n\n item.loaded = item.loading = item.img = item.imageAppended = false;\n }\n }\n });\n /*>>items-controller*/\n\n /*>>tap*/\n\n /**\n * tap.js:\n *\n * Displatches tap and double-tap events.\n * \n */\n\n\n var tapTimer,\n tapReleasePoint = {},\n _dispatchTapEvent = function _dispatchTapEvent(origEvent, releasePoint, pointerType) {\n var e = document.createEvent('CustomEvent'),\n eDetail = {\n origEvent: origEvent,\n target: origEvent.target,\n releasePoint: releasePoint,\n pointerType: pointerType || 'touch'\n };\n e.initCustomEvent('pswpTap', true, true, eDetail);\n origEvent.target.dispatchEvent(e);\n };\n\n _registerModule('Tap', {\n publicMethods: {\n initTap: function initTap() {\n _listen('firstTouchStart', self.onTapStart);\n\n _listen('touchRelease', self.onTapRelease);\n\n _listen('destroy', function () {\n tapReleasePoint = {};\n tapTimer = null;\n });\n },\n onTapStart: function onTapStart(touchList) {\n if (touchList.length > 1) {\n clearTimeout(tapTimer);\n tapTimer = null;\n }\n },\n onTapRelease: function onTapRelease(e, releasePoint) {\n if (!releasePoint) {\n return;\n }\n\n if (!_moved && !_isMultitouch && !_numAnimations) {\n var p0 = releasePoint;\n\n if (tapTimer) {\n clearTimeout(tapTimer);\n tapTimer = null; // Check if taped on the same place\n\n if (_isNearbyPoints(p0, tapReleasePoint)) {\n _shout('doubleTap', p0);\n\n return;\n }\n }\n\n if (releasePoint.type === 'mouse') {\n _dispatchTapEvent(e, releasePoint, 'mouse');\n\n return;\n }\n\n var clickedTagName = e.target.tagName.toUpperCase(); // avoid double tap delay on buttons and elements that have class pswp__single-tap\n\n if (clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap')) {\n _dispatchTapEvent(e, releasePoint);\n\n return;\n }\n\n _equalizePoints(tapReleasePoint, p0);\n\n tapTimer = setTimeout(function () {\n _dispatchTapEvent(e, releasePoint);\n\n tapTimer = null;\n }, 300);\n }\n }\n }\n });\n /*>>tap*/\n\n /*>>desktop-zoom*/\n\n /**\n *\n * desktop-zoom.js:\n *\n * - Binds mousewheel event for paning zoomed image.\n * - Manages \"dragging\", \"zoomed-in\", \"zoom-out\" classes.\n * (which are used for cursors and zoom icon)\n * - Adds toggleDesktopZoom function.\n * \n */\n\n\n var _wheelDelta;\n\n _registerModule('DesktopZoom', {\n publicMethods: {\n initDesktopZoom: function initDesktopZoom() {\n if (_oldIE) {\n // no zoom for old IE (<=8)\n return;\n }\n\n if (_likelyTouchDevice) {\n // if detected hardware touch support, we wait until mouse is used,\n // and only then apply desktop-zoom features\n _listen('mouseUsed', function () {\n self.setupDesktopZoom();\n });\n } else {\n self.setupDesktopZoom(true);\n }\n },\n setupDesktopZoom: function setupDesktopZoom(onInit) {\n _wheelDelta = {};\n var events = 'wheel mousewheel DOMMouseScroll';\n\n _listen('bindEvents', function () {\n framework.bind(template, events, self.handleMouseWheel);\n });\n\n _listen('unbindEvents', function () {\n if (_wheelDelta) {\n framework.unbind(template, events, self.handleMouseWheel);\n }\n });\n\n self.mouseZoomedIn = false;\n\n var hasDraggingClass,\n updateZoomable = function updateZoomable() {\n if (self.mouseZoomedIn) {\n framework.removeClass(template, 'pswp--zoomed-in');\n self.mouseZoomedIn = false;\n }\n\n if (_currZoomLevel < 1) {\n framework.addClass(template, 'pswp--zoom-allowed');\n } else {\n framework.removeClass(template, 'pswp--zoom-allowed');\n }\n\n removeDraggingClass();\n },\n removeDraggingClass = function removeDraggingClass() {\n if (hasDraggingClass) {\n framework.removeClass(template, 'pswp--dragging');\n hasDraggingClass = false;\n }\n };\n\n _listen('resize', updateZoomable);\n\n _listen('afterChange', updateZoomable);\n\n _listen('pointerDown', function () {\n if (self.mouseZoomedIn) {\n hasDraggingClass = true;\n framework.addClass(template, 'pswp--dragging');\n }\n });\n\n _listen('pointerUp', removeDraggingClass);\n\n if (!onInit) {\n updateZoomable();\n }\n },\n handleMouseWheel: function handleMouseWheel(e) {\n if (_currZoomLevel <= self.currItem.fitRatio) {\n if (_options.modal) {\n if (!_options.closeOnScroll || _numAnimations || _isDragging) {\n e.preventDefault();\n } else if (_transformKey && Math.abs(e.deltaY) > 2) {\n // close PhotoSwipe\n // if browser supports transforms & scroll changed enough\n _closedByScroll = true;\n self.close();\n }\n }\n\n return true;\n } // allow just one event to fire\n\n\n e.stopPropagation(); // https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\n _wheelDelta.x = 0;\n\n if ('deltaX' in e) {\n if (e.deltaMode === 1\n /* DOM_DELTA_LINE */\n ) {\n // 18 - average line height\n _wheelDelta.x = e.deltaX * 18;\n _wheelDelta.y = e.deltaY * 18;\n } else {\n _wheelDelta.x = e.deltaX;\n _wheelDelta.y = e.deltaY;\n }\n } else if ('wheelDelta' in e) {\n if (e.wheelDeltaX) {\n _wheelDelta.x = -0.16 * e.wheelDeltaX;\n }\n\n if (e.wheelDeltaY) {\n _wheelDelta.y = -0.16 * e.wheelDeltaY;\n } else {\n _wheelDelta.y = -0.16 * e.wheelDelta;\n }\n } else if ('detail' in e) {\n _wheelDelta.y = e.detail;\n } else {\n return;\n }\n\n _calculatePanBounds(_currZoomLevel, true);\n\n var newPanX = _panOffset.x - _wheelDelta.x,\n newPanY = _panOffset.y - _wheelDelta.y; // only prevent scrolling in nonmodal mode when not at edges\n\n if (_options.modal || newPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x && newPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y) {\n e.preventDefault();\n } // TODO: use rAF instead of mousewheel?\n\n\n self.panTo(newPanX, newPanY);\n },\n toggleDesktopZoom: function toggleDesktopZoom(centerPoint) {\n centerPoint = centerPoint || {\n x: _viewportSize.x / 2 + _offset.x,\n y: _viewportSize.y / 2 + _offset.y\n };\n\n var doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);\n\n var zoomOut = _currZoomLevel === doubleTapZoomLevel;\n self.mouseZoomedIn = !zoomOut;\n self.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);\n framework[(!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');\n }\n }\n });\n /*>>desktop-zoom*/\n\n /*>>history*/\n\n /**\n *\n * history.js:\n *\n * - Back button to close gallery.\n * \n * - Unique URL for each slide: example.com/&pid=1&gid=3\n * (where PID is picture index, and GID and gallery index)\n * \n * - Switch URL when slides change.\n * \n */\n\n\n var _historyDefaultOptions = {\n history: true,\n galleryUID: 1\n };\n\n var _historyUpdateTimeout,\n _hashChangeTimeout,\n _hashAnimCheckTimeout,\n _hashChangedByScript,\n _hashChangedByHistory,\n _hashReseted,\n _initialHash,\n _historyChanged,\n _closedFromURL,\n _urlChangedOnce,\n _windowLoc,\n _supportsPushState,\n _getHash = function _getHash() {\n return _windowLoc.hash.substring(1);\n },\n _cleanHistoryTimeouts = function _cleanHistoryTimeouts() {\n if (_historyUpdateTimeout) {\n clearTimeout(_historyUpdateTimeout);\n }\n\n if (_hashAnimCheckTimeout) {\n clearTimeout(_hashAnimCheckTimeout);\n }\n },\n // pid - Picture index\n // gid - Gallery index\n _parseItemIndexFromURL = function _parseItemIndexFromURL() {\n var hash = _getHash(),\n params = {};\n\n if (hash.length < 5) {\n // pid=1\n return params;\n }\n\n var i,\n vars = hash.split('&');\n\n for (i = 0; i < vars.length; i++) {\n if (!vars[i]) {\n continue;\n }\n\n var pair = vars[i].split('=');\n\n if (pair.length < 2) {\n continue;\n }\n\n params[pair[0]] = pair[1];\n }\n\n if (_options.galleryPIDs) {\n // detect custom pid in hash and search for it among the items collection\n var searchfor = params.pid;\n params.pid = 0; // if custom pid cannot be found, fallback to the first item\n\n for (i = 0; i < _items.length; i++) {\n if (_items[i].pid === searchfor) {\n params.pid = i;\n break;\n }\n }\n } else {\n params.pid = parseInt(params.pid, 10) - 1;\n }\n\n if (params.pid < 0) {\n params.pid = 0;\n }\n\n return params;\n },\n _updateHash = function _updateHash() {\n if (_hashAnimCheckTimeout) {\n clearTimeout(_hashAnimCheckTimeout);\n }\n\n if (_numAnimations || _isDragging) {\n // changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation\n // that's why we update hash only when no animations running\n _hashAnimCheckTimeout = setTimeout(_updateHash, 500);\n return;\n }\n\n if (_hashChangedByScript) {\n clearTimeout(_hashChangeTimeout);\n } else {\n _hashChangedByScript = true;\n }\n\n var pid = _currentItemIndex + 1;\n\n var item = _getItemAt(_currentItemIndex);\n\n if (item.hasOwnProperty('pid')) {\n // carry forward any custom pid assigned to the item\n pid = item.pid;\n }\n\n var newHash = _initialHash + '&' + 'gid=' + _options.galleryUID + '&' + 'pid=' + pid;\n\n if (!_historyChanged) {\n if (_windowLoc.hash.indexOf(newHash) === -1) {\n _urlChangedOnce = true;\n } // first time - add new hisory record, then just replace\n\n }\n\n var newURL = _windowLoc.href.split('#')[0] + '#' + newHash;\n\n if (_supportsPushState) {\n if ('#' + newHash !== window.location.hash) {\n history[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);\n }\n } else {\n if (_historyChanged) {\n _windowLoc.replace(newURL);\n } else {\n _windowLoc.hash = newHash;\n }\n }\n\n _historyChanged = true;\n _hashChangeTimeout = setTimeout(function () {\n _hashChangedByScript = false;\n }, 60);\n };\n\n _registerModule('History', {\n publicMethods: {\n initHistory: function initHistory() {\n framework.extend(_options, _historyDefaultOptions, true);\n\n if (!_options.history) {\n return;\n }\n\n _windowLoc = window.location;\n _urlChangedOnce = false;\n _closedFromURL = false;\n _historyChanged = false;\n _initialHash = _getHash();\n _supportsPushState = 'pushState' in history;\n\n if (_initialHash.indexOf('gid=') > -1) {\n _initialHash = _initialHash.split('&gid=')[0];\n _initialHash = _initialHash.split('?gid=')[0];\n }\n\n _listen('afterChange', self.updateURL);\n\n _listen('unbindEvents', function () {\n framework.unbind(window, 'hashchange', self.onHashChange);\n });\n\n var returnToOriginal = function returnToOriginal() {\n _hashReseted = true;\n\n if (!_closedFromURL) {\n if (_urlChangedOnce) {\n history.back();\n } else {\n if (_initialHash) {\n _windowLoc.hash = _initialHash;\n } else {\n if (_supportsPushState) {\n // remove hash from url without refreshing it or scrolling to top\n history.pushState('', document.title, _windowLoc.pathname + _windowLoc.search);\n } else {\n _windowLoc.hash = '';\n }\n }\n }\n }\n\n _cleanHistoryTimeouts();\n };\n\n _listen('unbindEvents', function () {\n if (_closedByScroll) {\n // if PhotoSwipe is closed by scroll, we go \"back\" before the closing animation starts\n // this is done to keep the scroll position\n returnToOriginal();\n }\n });\n\n _listen('destroy', function () {\n if (!_hashReseted) {\n returnToOriginal();\n }\n });\n\n _listen('firstUpdate', function () {\n _currentItemIndex = _parseItemIndexFromURL().pid;\n });\n\n var index = _initialHash.indexOf('pid=');\n\n if (index > -1) {\n _initialHash = _initialHash.substring(0, index);\n\n if (_initialHash.slice(-1) === '&') {\n _initialHash = _initialHash.slice(0, -1);\n }\n }\n\n setTimeout(function () {\n if (_isOpen) {\n // hasn't destroyed yet\n framework.bind(window, 'hashchange', self.onHashChange);\n }\n }, 40);\n },\n onHashChange: function onHashChange() {\n if (_getHash() === _initialHash) {\n _closedFromURL = true;\n self.close();\n return;\n }\n\n if (!_hashChangedByScript) {\n _hashChangedByHistory = true;\n self.goTo(_parseItemIndexFromURL().pid);\n _hashChangedByHistory = false;\n }\n },\n updateURL: function updateURL() {\n // Delay the update of URL, to avoid lag during transition, \n // and to not to trigger actions like \"refresh page sound\" or \"blinking favicon\" to often\n _cleanHistoryTimeouts();\n\n if (_hashChangedByHistory) {\n return;\n }\n\n if (!_historyChanged) {\n _updateHash(); // first time\n\n } else {\n _historyUpdateTimeout = setTimeout(_updateHash, 800);\n }\n }\n }\n });\n /*>>history*/\n\n\n framework.extend(self, publicMethods);\n };\n\n return PhotoSwipe;\n});\n\n//# sourceURL=webpack:///./node_modules/photoswipe/dist/photoswipe.js?");
/***/ }),
/***/ "./node_modules/pwa-install-prompt/script.js":
/*!***************************************************!*\
!*** ./node_modules/pwa-install-prompt/script.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * PWA Install Prompt 1.0.2\n * Prompt users to add your PWA to their home screen, since Apple won’t.\n * https://github.com/JacobDB/pwa-install-prompt/\n *\n * Copyright 2018 Jacob Bearce\n *\n * Released under the MIT License\n *\n * Released on: November 6, 2018\n */\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;\n})(this, function () {\n var DEFAULTS = {\n active_class: \"is-active\",\n closer: \".pwa-install-prompt__overlay\",\n condition: null,\n container: \".pwa-install-prompt__container\",\n expires: 28,\n show_after: 14\n };\n\n var NEEDS_TO_SEE_PROMPT = function NEEDS_TO_SEE_PROMPT(options) {\n // allow user to set a custom condition that overrides below\n if (options.condition !== null) {\n return options.condition;\n } // never show it if the app was launched standalone\n\n\n if (navigator.standalone) {\n return false;\n } // get the current date and the date the user last visited\n\n\n var NOW = Date.now();\n var THEN = document.cookie.match(/last_visit=([0-9]+)/); // update the last_visit cookie with Date.now()\n\n document.cookie = \"last_visit=\" + NOW + \"; max-age=\" + 60 * 60 * 24 * options.expires; // get the number of days since the user last visited and check if they're using iOS\n\n var DAYS = THEN && THEN.length >= 2 ? Math.ceil((parseInt(THEN[1]) - NOW) / (1000 * 60 * 60 * 24)) : NaN;\n var IOS = [\"iPad\", \"iPhone\", \"iPod\"].indexOf(navigator.platform) > -1; // show if the cookie isn't set, or last visit is > show_after, and it's iOS\n\n return (isNaN(DAYS) || DAYS > options.show_after) && IOS;\n };\n\n var INSTALL_PROMPT = function INSTALL_PROMPT() {\n var container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULTS.container;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var PROMPT = this;\n options.active_class = options.active_class || DEFAULTS.active_class;\n options.closer = options.closer || DEFAULTS.closer;\n options.condition = options.condition || DEFAULTS.condition;\n options.container = container;\n options.expires = options.expires || DEFAULTS.expires;\n options.show_after = options.show_after || DEFAULTS.show_after;\n options.on = options.on || false; // store the arguments for later\n\n PROMPT.container = container;\n PROMPT.options = options;\n PROMPT.eventListeners = {};\n\n if (PROMPT.options.on) {\n // listen for each event specified\n Object.keys(PROMPT.options.on).forEach(function (event_name) {\n PROMPT.on(event_name, PROMPT.options.on[event_name]);\n });\n } // open if the conditional returns true\n\n\n if (NEEDS_TO_SEE_PROMPT(PROMPT.options)) {\n PROMPT.open();\n }\n\n var CLOSER = document.querySelector(PROMPT.options.closer); // close if the closer is clicked\n\n if (CLOSER) {\n CLOSER.addEventListener(\"click\", function () {\n PROMPT.close();\n });\n }\n };\n\n INSTALL_PROMPT.prototype.on = function (events, handler) {\n var PROMPT = this; // prevent errors if a function wasn't passed\n\n if (typeof handler !== \"function\") {\n return PROMPT;\n } // set up eventListeners array to associate events with their specified handlers\n\n\n events.split(\" \").forEach(function (event) {\n if (!PROMPT.eventListeners[event]) {\n PROMPT.eventListeners[event] = [];\n }\n\n PROMPT.eventListeners[event].push(handler);\n });\n return PROMPT;\n };\n\n INSTALL_PROMPT.prototype.emit = function () {\n var PROMPT = this; // prevent errors if no event listeners are specified\n\n if (!PROMPT.eventListeners) {\n return PROMPT;\n } // convert the events in to an array if they're not already\n\n\n var EVENTS = Array.isArray(arguments[0]) ? arguments[0] : arguments[0].split(\" \");\n EVENTS.forEach(function (event) {\n // verify that the emitted event is being listend for\n if (PROMPT.eventListeners && PROMPT.eventListeners[event]) {\n // fire each handler for the event\n PROMPT.eventListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(PROMPT);\n });\n }\n });\n return PROMPT;\n };\n\n INSTALL_PROMPT.prototype.open = function () {\n var PROMPT = this;\n var CONTAINER = document.querySelector(PROMPT.options.container);\n\n if (CONTAINER) {\n CONTAINER.classList.add(PROMPT.options.active_class);\n }\n\n PROMPT.emit(\"open\");\n };\n\n INSTALL_PROMPT.prototype.close = function () {\n var PROMPT = this;\n var CONTAINER = document.querySelector(PROMPT.options.container);\n\n if (CONTAINER) {\n CONTAINER.classList.remove(PROMPT.options.active_class);\n }\n\n PROMPT.emit(\"close\");\n };\n\n return INSTALL_PROMPT;\n});\n\n//# sourceURL=webpack:///./node_modules/pwa-install-prompt/script.js?");
/***/ }),
/***/ "./node_modules/scroll-hint/lib/index.js":
/*!***********************************************!*\
!*** ./node_modules/scroll-hint/lib/index.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _es6ObjectAssign = __webpack_require__(/*! es6-object-assign */ \"./node_modules/es6-object-assign/index.js\");\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/scroll-hint/lib/util.js\");\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar defaults = {\n suggestClass: 'is-active',\n scrollableClass: 'is-scrollable',\n scrollableRightClass: 'is-right-scrollable',\n scrollableLeftClass: 'is-left-scrollable',\n scrollHintClass: 'scroll-hint',\n scrollHintIconClass: 'scroll-hint-icon',\n scrollHintIconAppendClass: '',\n // 'scroll-hint-icon-white'\n scrollHintIconWrapClass: 'scroll-hint-icon-wrap',\n scrollHintText: 'scroll-hint-text',\n scrollHintBorderWidth: 10,\n remainingTime: -1,\n enableOverflowScrolling: true,\n applyToParents: false,\n suggestiveShadow: false,\n i18n: {\n scrollable: 'scrollable'\n }\n};\n\nvar ScrollHint = function () {\n function ScrollHint(ele, option) {\n var _this = this;\n\n _classCallCheck(this, ScrollHint);\n\n this.opt = (0, _es6ObjectAssign.assign)({}, defaults, option);\n this.items = [];\n var elements = typeof ele === 'string' ? document.querySelectorAll(ele) : ele;\n var applyToParents = this.opt.applyToParents;\n [].forEach.call(elements, function (element) {\n if (applyToParents) {\n element = element.parentElement;\n }\n\n element.style.position = 'relative';\n element.style.overflow = 'auto';\n\n if (_this.opt.enableOverflowScrolling) {\n if ('overflowScrolling' in element.style) {\n element.style.overflowScrolling = 'touch';\n } else if ('webkitOverflowScrolling' in element.style) {\n element.style.webkitOverflowScrolling = 'touch';\n }\n }\n\n var item = {\n element: element,\n scrolledIn: false,\n interacted: false\n };\n element.addEventListener('scroll', function () {\n item.interacted = true;\n\n _this.updateItem(item);\n });\n (0, _util.addClass)(element, _this.opt.scrollHintClass);\n (0, _util.append)(element, '<div class=\"' + _this.opt.scrollHintIconWrapClass + '\" data-target=\"scrollable-icon\">\\n <span class=\"' + _this.opt.scrollHintIconClass + (_this.opt.scrollHintIconAppendClass ? ' ' + _this.opt.scrollHintIconAppendClass : '') + '\">\\n <div class=\"' + _this.opt.scrollHintText + '\">' + _this.opt.i18n.scrollable + '</div>\\n </span>\\n </div>');\n\n _this.items.push(item);\n });\n window.addEventListener('scroll', function () {\n _this.updateItems();\n });\n window.addEventListener('resize', function () {\n _this.updateItems();\n });\n this.updateItems();\n }\n\n _createClass(ScrollHint, [{\n key: 'isScrollable',\n value: function isScrollable(item) {\n var element = item.element;\n return element.clientWidth < element.scrollWidth;\n }\n }, {\n key: 'checkScrollableDir',\n value: function checkScrollableDir(item) {\n var _opt = this.opt,\n scrollHintBorderWidth = _opt.scrollHintBorderWidth,\n scrollableRightClass = _opt.scrollableRightClass,\n scrollableLeftClass = _opt.scrollableLeftClass;\n var element = item.element;\n var child = element.children[0];\n var width = child.scrollWidth;\n var parentWidth = element.offsetWidth;\n var scrollLeft = element.scrollLeft;\n\n if (parentWidth + scrollLeft < width - scrollHintBorderWidth) {\n (0, _util.addClass)(element, scrollableRightClass);\n } else {\n (0, _util.removeClass)(element, scrollableRightClass);\n }\n\n if (parentWidth < width && scrollLeft > scrollHintBorderWidth) {\n (0, _util.addClass)(element, scrollableLeftClass);\n } else {\n (0, _util.removeClass)(element, scrollableLeftClass);\n }\n }\n }, {\n key: 'needSuggest',\n value: function needSuggest(item) {\n var scrolledIn = item.scrolledIn,\n interacted = item.interacted;\n return !interacted && scrolledIn && this.isScrollable(item);\n }\n }, {\n key: 'updateItems',\n value: function updateItems() {\n var _this2 = this;\n\n [].forEach.call(this.items, function (item) {\n _this2.updateItem(item);\n });\n }\n }, {\n key: 'updateStatus',\n value: function updateStatus(item) {\n var _this3 = this;\n\n var element = item.element,\n scrolledIn = item.scrolledIn;\n\n if (scrolledIn) {\n return;\n }\n\n if ((0, _util.getOffset)(element).top + element.offsetHeight / 2 < (0, _util.getScrollTop)() + window.innerHeight) {\n item.scrolledIn = true;\n\n if (this.opt.remainingTime !== -1) {\n setTimeout(function () {\n item.interacted = true;\n\n _this3.updateItem(item);\n }, this.opt.remainingTime);\n }\n }\n }\n }, {\n key: 'updateItem',\n value: function updateItem(item) {\n var opt = this.opt;\n var element = item.element;\n var target = element.querySelector('[data-target=\"scrollable-icon\"]');\n this.updateStatus(item);\n\n if (this.isScrollable(item)) {\n (0, _util.addClass)(element, opt.scrollableClass);\n } else {\n (0, _util.removeClass)(element, opt.scrollableClass);\n }\n\n if (this.needSuggest(item)) {\n (0, _util.addClass)(target, opt.suggestClass);\n } else {\n (0, _util.removeClass)(target, opt.suggestClass);\n }\n\n if (opt.suggestiveShadow) {\n this.checkScrollableDir(item);\n }\n }\n }]);\n\n return ScrollHint;\n}();\n\nexports.default = ScrollHint;\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/scroll-hint/lib/index.js?");
/***/ }),
/***/ "./node_modules/scroll-hint/lib/util.js":
/*!**********************************************!*\
!*** ./node_modules/scroll-hint/lib/util.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar append = exports.append = function append(element, string) {\n var div = document.createElement('div');\n div.innerHTML = string;\n\n while (div.children.length > 0) {\n element.appendChild(div.children[0]);\n }\n};\n\nvar addClass = exports.addClass = function addClass(element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className += ' ' + className;\n }\n};\n\nvar removeClass = exports.removeClass = function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n};\n\nvar getScrollTop = exports.getScrollTop = function getScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n};\n\nvar getScrollLeft = exports.getScrollLeft = function getScrollLeft() {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n};\n\nvar getOffset = exports.getOffset = function getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + getScrollTop(),\n left: rect.left + getScrollLeft()\n };\n};\n\n//# sourceURL=webpack:///./node_modules/scroll-hint/lib/util.js?");
/***/ }),
/***/ "./node_modules/slideout/index.js":
/*!****************************************!*\
!*** ./node_modules/slideout/index.js ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n/**\n * Module dependencies\n */\n\nvar decouple = __webpack_require__(/*! decouple */ \"./node_modules/decouple/index.js\");\n\nvar Emitter = __webpack_require__(/*! jvent */ \"./node_modules/jvent/index.js\");\n/**\n * Classnames\n */\n\n\nvar SLIDEOUT_PANEL = 'slideout-panel';\nvar SLIDEOUT_MENU = 'slideout-menu';\nvar SLIDEOUT_OPEN = 'slideout-open';\nvar SLIDEOUT_MOVE = 'slideout-move';\n/**\n * CSS prefixed properties\n */\n\nvar WEBKIT_TRANSFORM = '-webkit-transform';\nvar WEBKIT_TRANSITION = '-webkit-transition';\n/**\n * Privates\n */\n\nvar scrollTimeout;\nvar scrolling = false;\nvar html = document.documentElement;\nvar msPointerSupported = navigator.msPointerEnabled;\nvar touch = {\n 'start': msPointerSupported ? 'MSPointerDown' : 'touchstart',\n 'move': msPointerSupported ? 'MSPointerMove' : 'touchmove',\n 'end': msPointerSupported ? 'MSPointerUp' : 'touchend'\n};\n\nfunction extend(destination, from) {\n for (var prop in from) {\n if (from[prop]) {\n destination[prop] = from[prop];\n }\n }\n\n return destination;\n}\n\nfunction inherits(child, uber) {\n child.prototype = extend(child.prototype || {}, uber.prototype);\n}\n\nfunction hasIgnoredElements(el) {\n while (el.parentNode) {\n if (el.getAttribute('data-slideout-ignore') !== null) {\n return el;\n }\n\n el = el.parentNode;\n }\n\n return null;\n}\n/**\n * Slideout constructor\n */\n\n\nfunction Slideout(options) {\n options = options || {}; // Sets default values\n\n this._startOffsetX = 0;\n this._currentOffsetX = 0;\n this._opening = false;\n this._moved = false;\n this._opened = false;\n this._preventOpen = false; // Sets slideout elements\n\n this.panel = options.panel;\n this.menu = options.menu;\n this.itemToMove = options.itemToMove === 'panel' ? this.panel : this.menu;\n this.dimmer = document.createElement('div');\n this.dimmer.className = 'slideout-dimmer';\n this.panel.insertBefore(this.dimmer, this.panel.firstChild); // Sets options\n\n this._touch = options.touch === undefined ? true : options.touch && true;\n this._side = options.side || 'left';\n this._easing = options.fx || options.easing || 'ease';\n this._duration = parseInt(options.duration, 10) || 300;\n this._tolerance = parseInt(options.tolerance, 10) || 70;\n this._padding = this._translateTo = parseInt(options.padding, 10) || 256;\n this._orientation = this._side === 'right' ? -1 : 1;\n this._translateTo *= this._orientation;\n this._grabWidth = parseInt(options.grabWidth, 10) || Math.round(html.clientWidth / 3); // Sets classnames\n\n if (!this.panel.classList.contains(SLIDEOUT_PANEL)) {\n this.panel.classList.add(SLIDEOUT_PANEL);\n }\n\n if (!this.panel.classList.contains(SLIDEOUT_PANEL + '-' + this._side)) {\n this.panel.classList.add(SLIDEOUT_PANEL + '-' + this._side);\n }\n\n if (!this.menu.classList.contains(SLIDEOUT_MENU)) {\n this.menu.classList.add(SLIDEOUT_MENU);\n }\n\n if (!this.menu.classList.contains(SLIDEOUT_MENU + '-' + this._side)) {\n this.menu.classList.add(SLIDEOUT_MENU + '-' + this._side);\n }\n\n if (options.itemToMove === 'panel') {\n this.panel.classList.add(SLIDEOUT_MOVE);\n } else {\n this.menu.classList.add(SLIDEOUT_MOVE);\n }\n\n var self = this;\n\n this._closeByDimmer = function (eve) {\n if (self._opened) {\n eve.preventDefault();\n eve.stopPropagation();\n self.close();\n }\n }; // Init touch events\n\n\n if (this._touch) {\n this._initTouchEvents();\n }\n}\n/**\n * Inherits from Emitter\n */\n\n\ninherits(Slideout, Emitter);\n/**\n * Opens the slideout menu.\n */\n\nSlideout.prototype.open = function () {\n var self = this;\n this.emit('before:open');\n\n if (!html.classList.contains(SLIDEOUT_OPEN)) {\n html.classList.add(SLIDEOUT_OPEN);\n }\n\n this._addTransition();\n\n this._translateXTo(this._translateTo);\n\n this.panel.addEventListener('click', this._closeByDimmer, true);\n this._opened = true;\n setTimeout(function () {\n self._removeTransition();\n\n self.emit('open');\n }, this._duration + 50);\n return this;\n};\n/**\n * Closes slideout menu.\n */\n\n\nSlideout.prototype.close = function () {\n var self = this;\n\n if (!this.isOpen() && !this._opening) {\n return this;\n }\n\n this.emit('before:close');\n\n this._addTransition();\n\n this._translateXTo(0);\n\n this.panel.removeEventListener('click', this._closeByDimmer);\n this._opened = false;\n setTimeout(function () {\n html.classList.remove(SLIDEOUT_OPEN);\n self.itemToMove.style[WEBKIT_TRANSFORM] = self.itemToMove.style.transform = null;\n\n self._removeTransition();\n\n self.emit('close');\n }, this._duration + 50);\n return this;\n};\n/**\n * Toggles (open/close) slideout menu.\n */\n\n\nSlideout.prototype.toggle = function () {\n return this.isOpen() ? this.close() : this.open();\n};\n/**\n * Returns true if the slideout is currently open, and false if it is closed.\n */\n\n\nSlideout.prototype.isOpen = function () {\n return this._opened;\n};\n/**\n * Translates panel and updates currentOffset with a given X point\n */\n\n\nSlideout.prototype._translateXTo = function (translateX) {\n this._currentOffsetX = translateX;\n this.itemToMove.style[WEBKIT_TRANSFORM] = this.itemToMove.style.transform = 'translateX(' + translateX + 'px)';\n this.dimmer.style.opacity = (Math.abs(translateX) / this.menu.offsetWidth).toFixed(4); // smooth\n\n return this;\n};\n/**\n * Add transition properties\n */\n\n\nSlideout.prototype._addTransition = function () {\n this.itemToMove.style[WEBKIT_TRANSITION] = WEBKIT_TRANSFORM + ' ' + this._duration + 'ms ' + this._easing;\n this.itemToMove.style.transition = 'transform ' + this._duration + 'ms ' + this._easing;\n this.dimmer.style[WEBKIT_TRANSITION] = this.dimmer.style.transition = 'opacity ' + this._duration + 'ms ' + this._easing;\n return this;\n};\n/**\n * Remove transition properties\n */\n\n\nSlideout.prototype._removeTransition = function () {\n this.itemToMove.style.transition = this.itemToMove.style[WEBKIT_TRANSITION] = null;\n this.dimmer.style.transition = this.dimmer.style[WEBKIT_TRANSITION] = null;\n this.dimmer.style.opacity = null;\n return this;\n};\n/**\n * Initializes touch event\n */\n\n\nSlideout.prototype._initTouchEvents = function () {\n var self = this;\n /**\n * Decouple scroll event\n */\n\n this._onScrollFn = decouple(document, 'scroll', function () {\n if (!self._moved) {\n clearTimeout(scrollTimeout);\n scrolling = true;\n scrollTimeout = setTimeout(function () {\n scrolling = false;\n }, 250);\n }\n });\n /**\n * Prevents touchmove event if slideout is moving\n */\n\n this._preventMove = function (eve) {\n if (self._moved) {\n eve.preventDefault();\n }\n };\n\n document.addEventListener(touch.move, this._preventMove);\n /**\n * Resets values on touchstart\n */\n\n this._resetTouchFn = function (eve) {\n if (typeof eve.touches === 'undefined') {\n return;\n }\n\n self._moved = false;\n self._opening = false;\n self._startOffsetX = eve.touches[0].pageX;\n var offset = self._startOffsetX;\n\n if (self._side === 'right') {\n offset = html.clientWidth - self._startOffsetX;\n }\n\n self._preventOpen = !self._touch || this === self.panel && offset > self._grabWidth;\n };\n\n this.panel.addEventListener(touch.start, this._resetTouchFn);\n this.menu.addEventListener(touch.start, this._resetTouchFn);\n /**\n * Resets values on touchcancel\n */\n\n this._onTouchCancelFn = function () {\n self._moved = false;\n self._opening = false;\n };\n\n this.panel.addEventListener('touchcancel', this._onTouchCancelFn);\n this.menu.addEventListener('touchcancel', this._onTouchCancelFn);\n /**\n * Toggles slideout on touchend\n */\n\n this._onTouchEndFn = function () {\n if (self._moved) {\n self.emit('translate:end');\n self._opening && Math.abs(self._currentOffsetX) > self._tolerance ? self.open() : self.close();\n }\n\n self._moved = false;\n };\n\n this.panel.addEventListener(touch.end, this._onTouchEndFn);\n this.menu.addEventListener(touch.end, this._onTouchEndFn);\n /**\n * Translates panel on touchmove\n */\n\n this._onTouchMoveFn = function (eve) {\n if (scrolling || self._preventOpen || typeof eve.touches === 'undefined' || hasIgnoredElements(eve.target)) {\n return;\n }\n\n var dif_x = eve.touches[0].clientX - self._startOffsetX;\n var translateX = self._currentOffsetX = dif_x;\n\n if (Math.abs(translateX) > self._padding) {\n return;\n }\n\n if (Math.abs(dif_x) > 20) {\n self._opening = true;\n var oriented_dif_x = dif_x * self._orientation;\n\n if (self._opened && oriented_dif_x > 0 || !self._opened && oriented_dif_x < 0) {\n return;\n }\n\n if (!self._moved) {\n self.emit('translate:start');\n }\n\n if (oriented_dif_x <= 0) {\n translateX = dif_x + self._padding * self._orientation;\n self._opening = false;\n }\n\n if (!(self._moved && html.classList.contains(SLIDEOUT_OPEN))) {\n html.classList.add(SLIDEOUT_OPEN);\n }\n\n self._translateXTo(translateX);\n\n self.emit('translate', translateX);\n self._moved = true;\n }\n };\n\n this.panel.addEventListener(touch.move, this._onTouchMoveFn, {\n passive: true\n });\n this.menu.addEventListener(touch.move, this._onTouchMoveFn, {\n passive: true\n });\n return this;\n};\n/**\n * Enable opening the slideout via touch events.\n */\n\n\nSlideout.prototype.enableTouch = function () {\n this._touch = true;\n return this;\n};\n/**\n * Disable opening the slideout via touch events.\n */\n\n\nSlideout.prototype.disableTouch = function () {\n this._touch = false;\n return this;\n};\n/**\n * Destroy an instance of slideout.\n */\n\n\nSlideout.prototype.destroy = function () {\n // Close before clean\n this.close(); // Remove event listeners\n\n document.removeEventListener('scroll', this._onScrollFn);\n document.removeEventListener(touch.move, this._preventMove);\n this.panel.removeEventListener(touch.start, this._resetTouchFn);\n this.panel.removeEventListener('touchcancel', this._onTouchCancelFn);\n this.panel.removeEventListener(touch.end, this._onTouchEndFn);\n this.panel.removeEventListener(touch.move, this._onTouchMoveFn); // Remove methods\n\n this.open = this.close = function () {}; // Return the instance so it can be easily dereferenced\n\n\n return this;\n};\n/**\n * Expose Slideout\n */\n\n\nmodule.exports = Slideout;\n\n//# sourceURL=webpack:///./node_modules/slideout/index.js?");
/***/ }),
/***/ "./node_modules/ssr-window/dist/ssr-window.esm.js":
/*!********************************************************!*\
!*** ./node_modules/ssr-window/dist/ssr-window.esm.js ***!
\********************************************************/
/*! exports provided: window, document */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return win; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"document\", function() { return doc; });\n/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = typeof document === 'undefined' ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: ''\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {}\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n }\n };\n },\n location: {\n hash: ''\n }\n} : document; // eslint-disable-line\n\nvar win = typeof window === 'undefined' ? {\n document: doc,\n navigator: {\n userAgent: ''\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n }\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {}\n} : window; // eslint-disable-line\n\n\n\n//# sourceURL=webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js?");
/***/ }),
/***/ "./node_modules/swiper/dist/js/swiper.esm.bundle.js":
/*!**********************************************************!*\
!*** ./node_modules/swiper/dist/js/swiper.esm.bundle.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7/dist/dom7.modular */ \"./node_modules/dom7/dist/dom7.modular.js\");\n/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ssr-window */ \"./node_modules/ssr-window/dist/ssr-window.esm.js\");\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Swiper 4.4.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2018 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 1, 2018\n */\n\n\nvar Methods = {\n addClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"],\n removeClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"],\n hasClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"],\n toggleClass: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"toggleClass\"],\n attr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"attr\"],\n removeAttr: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"removeAttr\"],\n data: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"data\"],\n transform: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"transform\"],\n transition: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"transition\"],\n on: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"on\"],\n off: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"off\"],\n trigger: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"trigger\"],\n transitionEnd: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"transitionEnd\"],\n outerWidth: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"outerWidth\"],\n outerHeight: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"outerHeight\"],\n offset: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"offset\"],\n css: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"css\"],\n each: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"each\"],\n html: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"html\"],\n text: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"text\"],\n is: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"is\"],\n index: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"index\"],\n eq: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"eq\"],\n append: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"append\"],\n prepend: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"prepend\"],\n next: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"next\"],\n nextAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"nextAll\"],\n prev: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"prev\"],\n prevAll: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"prevAll\"],\n parent: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"parent\"],\n parents: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"parents\"],\n closest: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"closest\"],\n find: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"find\"],\n children: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"children\"],\n remove: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"remove\"],\n add: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"add\"],\n styles: dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"styles\"]\n};\nObject.keys(Methods).forEach(function (methodName) {\n dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"].fn[methodName] = Methods[methodName];\n});\nvar Utils = {\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n },\n nextTick: function nextTick(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return setTimeout(callback, delay);\n },\n now: function now() {\n return Date.now();\n },\n getTranslate: function getTranslate(el) {\n var axis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].getComputedStyle(el, null);\n\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n },\n parseUrlQuery: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].location.href;\n var i;\n var params;\n var param;\n var length;\n\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) {\n return paramsPart !== '';\n });\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n\n return query;\n },\n isObject: function isObject(o) {\n return _typeof(o) === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n }\n};\n\nvar Support = function Support() {\n var testDiv = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].createElement('div');\n return {\n touch: ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Modernizr && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Modernizr.touch === true || function checkTouch() {\n return !!('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);\n }(),\n pointerEvents: !!(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.pointerEnabled || ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].PointerEvent || 'maxTouchPoints' in ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator),\n prefixedPointerEvents: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.msPointerEnabled,\n transition: function checkTransition() {\n var style = testDiv.style;\n return 'transition' in style || 'webkitTransition' in style || 'MozTransition' in style;\n }(),\n transforms3d: ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Modernizr && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Modernizr.csstransforms3d === true || function checkTransforms3d() {\n var style = testDiv.style;\n return 'webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style;\n }(),\n flexbox: function checkFlexbox() {\n var style = testDiv.style;\n var styles$$1 = 'alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient'.split(' ');\n\n for (var i = 0; i < styles$$1.length; i += 1) {\n if (styles$$1[i] in style) return true;\n }\n\n return false;\n }(),\n observer: function checkObserver() {\n return 'MutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"] || 'WebkitMutationObserver' in ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"];\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"];\n }()\n };\n}();\n\nvar SwiperClass =\n/*#__PURE__*/\nfunction () {\n function SwiperClass() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, SwiperClass);\n\n var self = this;\n self.params = params; // Events\n\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n _createClass(SwiperClass, [{\n key: \"on\",\n value: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n }, {\n key: \"once\",\n value: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n }\n\n return self.on(events, onceHandler, priority);\n }\n }, {\n key: \"off\",\n value: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach(function (eventHandler, index$$1) {\n if (eventHandler === handler) {\n self.eventsListeners[event].splice(index$$1, 1);\n }\n });\n }\n });\n return self;\n }\n }, {\n key: \"emit\",\n value: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data$$1;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data$$1 = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data$$1 = args[0].data;\n context = args[0].context || self;\n }\n\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data$$1);\n });\n }\n });\n return self;\n }\n }, {\n key: \"useModulesParams\",\n value: function useModulesParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n }, {\n key: \"useModules\",\n value: function useModules() {\n var modulesParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Extend instance methods and props\n\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n } // Add event listeners\n\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n }], [{\n key: \"installModule\",\n value: function installModule(module) {\n var Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n var name = module.name || \"\".concat(Object.keys(Class.prototype.modules).length, \"_\").concat(Utils.now());\n Class.prototype.modules[name] = module; // Prototype\n\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n } // Class\n\n\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n } // Callback\n\n\n if (module.install) {\n for (var _len3 = arguments.length, params = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n params[_key3 - 1] = arguments[_key3];\n }\n\n module.install.apply(Class, params);\n }\n\n return Class;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n var Class = this;\n\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Class.installModule(m);\n });\n return Class;\n }\n\n for (var _len4 = arguments.length, params = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n params[_key4 - 1] = arguments[_key4];\n }\n\n return Class.installModule.apply(Class, [module].concat(params));\n }\n }, {\n key: \"components\",\n set: function set(components) {\n var Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n }]);\n\n return SwiperClass;\n}();\n\nfunction updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n Utils.extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\".concat(swiper.params.slideClass));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index$$1 = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (params.slidesPerColumn * slidesPerRow - slidesLength);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n\n var _slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n\n _slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n _slide.css(\"margin-\".concat(swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && \"\".concat(params.spaceBetween, \"px\")).attr('data-swiper-column', column).attr('data-swiper-row', row);\n }\n\n if (_slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].getComputedStyle(_slide[0], null);\n var currentTransform = _slide[0].style.transform;\n var currentWebKitTransform = _slide[0].style.webkitTransform;\n\n if (currentTransform) {\n _slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n _slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? _slide.outerWidth(true) : _slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n slideSize = parseFloat(slideStyles.getPropertyValue('width')) + parseFloat(slideStyles.getPropertyValue('margin-left')) + parseFloat(slideStyles.getPropertyValue('margin-right'));\n } else {\n slideSize = parseFloat(slideStyles.getPropertyValue('height')) + parseFloat(slideStyles.getPropertyValue('margin-top')) + parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n }\n }\n\n if (currentTransform) {\n _slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n _slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = \"\".concat(slideSize, \"px\");\n } else {\n slides[i].style.height = \"\".concat(slideSize, \"px\");\n }\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index$$1 % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index$$1 % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index$$1 += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: \"\".concat(swiper.virtualSize + params.spaceBetween, \"px\")\n });\n }\n\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({\n width: \"\".concat(swiper.virtualSize + params.spaceBetween, \"px\")\n });else $wrapperEl.css({\n height: \"\".concat(swiper.virtualSize + params.spaceBetween, \"px\")\n });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({\n width: \"\".concat(swiper.virtualSize + params.spaceBetween, \"px\")\n });else $wrapperEl.css({\n height: \"\".concat(swiper.virtualSize + params.spaceBetween, \"px\")\n });\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.css({\n marginLeft: \"\".concat(spaceBetween, \"px\")\n });else slides.css({\n marginRight: \"\".concat(spaceBetween, \"px\")\n });\n } else slides.css({\n marginBottom: \"\".concat(spaceBetween, \"px\")\n });\n }\n\n if (params.centerInsufficientSlides) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n } // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index$$1 = swiper.activeIndex + i;\n if (index$$1 > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index$$1)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', \"\".concat(newHeight, \"px\"));\n}\n\nfunction updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress() {\n var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var _slide2 = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - _slide2.swiperSlideOffset) / (_slide2.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - _slide2.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size || slideAfter > 0 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(_slide2);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n _slide2.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.visibleSlides);\n}\n\nfunction updateProgress() {\n var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;\n var swiper = this;\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(\"\".concat(params.slideActiveClass, \" \").concat(params.slideNextClass, \" \").concat(params.slidePrevClass, \" \").concat(params.slideDuplicateActiveClass, \" \").concat(params.slideDuplicateNextClass, \" \").concat(params.slideDuplicatePrevClass));\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\".concat(params.slideClass, \"[data-swiper-slide-index=\\\"\").concat(activeIndex, \"\\\"]\"));\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\".concat(params.slideClass, \":not(.\").concat(params.slideDuplicateClass, \")[data-swiper-slide-index=\\\"\").concat(realIndex, \"\\\"]\")).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\".concat(params.slideClass, \".\").concat(params.slideDuplicateClass, \"[data-swiper-slide-index=\\\"\").concat(realIndex, \"\\\"]\")).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\".concat(params.slideClass)).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\".concat(params.slideClass)).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\".concat(params.slideClass, \":not(.\").concat(params.slideDuplicateClass, \")[data-swiper-slide-index=\\\"\").concat(nextSlide.attr('data-swiper-slide-index'), \"\\\"]\")).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\".concat(params.slideClass, \".\").concat(params.slideDuplicateClass, \"[data-swiper-slide-index=\\\"\").concat(nextSlide.attr('data-swiper-slide-index'), \"\\\"]\")).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\".concat(params.slideClass, \":not(.\").concat(params.slideDuplicateClass, \")[data-swiper-slide-index=\\\"\").concat(prevSlide.attr('data-swiper-slide-index'), \"\\\"]\")).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\".concat(params.slideClass, \".\").concat(params.slideDuplicateClass, \"[data-swiper-slide-index=\\\"\").concat(prevSlide.attr('data-swiper-slide-index'), \"\\\"]\")).addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n swiper.emit('slideChange');\n}\n\nfunction updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).closest(\".\".concat(params.slideClass))[0];\n var slideFound = false;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};\n\nfunction getTranslate() {\n var axis = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.isHorizontal() ? 'x' : 'y';\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) $wrapperEl.transform(\"translate3d(\".concat(x, \"px, \").concat(y, \"px, \").concat(z, \"px)\"));else $wrapperEl.transform(\"translate(\".concat(x, \"px, \").concat(y, \"px)\"));\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nvar translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate\n};\n\nfunction setTransition(duration, byController) {\n var swiper = this;\n swiper.$wrapperEl.transition(duration);\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart() {\n var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var direction = arguments.length > 1 ? arguments[1] : undefined;\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd$1() {\n var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var direction = arguments.length > 1 ? arguments[1] : undefined;\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex;\n swiper.animating = false;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1\n};\n\nfunction slideTo() {\n var index$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;\n var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var internal = arguments.length > 3 ? arguments[3] : undefined;\n var swiper = this;\n var slideIndex = index$$1;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd$$1(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop() {\n var index$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;\n var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var internal = arguments.length > 3 ? arguments[3] : undefined;\n var swiper = this;\n var newIndex = index$$1;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\n\n\nfunction slideNext() {\n var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var internal = arguments.length > 2 ? arguments[2] : undefined;\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\n\n\nfunction slidePrev() {\n var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var internal = arguments.length > 2 ? arguments[2] : undefined;\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var normalizedSlidesGrid = slidesGrid.map(function (val) {\n return normalize(val);\n });\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\n\n\nfunction slideReset() {\n var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var internal = arguments.length > 2 ? arguments[2] : undefined;\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\n\n\nfunction slideToClosest() {\n var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var internal = arguments.length > 2 ? arguments[2] : undefined;\n var swiper = this;\n var index$$1 = swiper.activeIndex;\n var snapIndex = Math.floor(index$$1 / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n var _translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (_translate - currentSnap > (nextSnap - currentSnap) / 2) {\n index$$1 = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index$$1, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\".concat(params.slideClass, \"[data-swiper-slide-index=\\\"\").concat(realIndex, \"\\\"]:not(.\").concat(params.slideDuplicateClass, \")\")).eq(0).index();\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\".concat(params.slideClass, \"[data-swiper-slide-index=\\\"\").concat(realIndex, \"\\\"]:not(.\").concat(params.slideDuplicateClass, \")\")).eq(0).index();\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};\n\nfunction loopCreate() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\".concat(params.slideClass, \".\").concat(params.slideDuplicateClass)).remove();\n var slides = $wrapperEl.children(\".\".concat(params.slideClass));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].createElement('div')).addClass(\"\".concat(params.slideClass, \" \").concat(params.slideBlankClass));\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\".concat(params.slideClass));\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index$$1, el) {\n var slide = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(el);\n if (index$$1 < swiper.loopedSlides) appendSlides.push(el);\n if (index$$1 < slides.length && index$$1 >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index$$1);\n });\n\n for (var _i3 = 0; _i3 < appendSlides.length; _i3 += 1) {\n $wrapperEl.append(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(appendSlides[_i3].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i4 = prependSlides.length - 1; _i4 >= 0; _i4 -= 1) {\n $wrapperEl.prepend(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(prependSlides[_i4].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix() {\n var swiper = this;\n var params = swiper.params,\n activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2 || activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n}\n\nfunction loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\".concat(params.slideClass, \".\").concat(params.slideDuplicateClass)).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor() {\n var swiper = this;\n if (Support.touch || swiper.params.watchOverflow && swiper.isLocked) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};\n\nfunction appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index$$1, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\".concat(params.slideClass));\n }\n\n var baseLength = swiper.slides.length;\n\n if (index$$1 <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index$$1 >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index$$1; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (_typeof(slides) === 'object' && 'length' in slides) {\n for (var _i5 = 0; _i5 < slides.length; _i5 += 1) {\n if (slides[_i5]) $wrapperEl.append(slides[_i5]);\n }\n\n newActiveIndex = activeIndexBuffer > index$$1 ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i6 = 0; _i6 < slidesBuffer.length; _i6 += 1) {\n $wrapperEl.append(slidesBuffer[_i6]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\".concat(params.slideClass));\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (_typeof(slidesIndexes) === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};\n\nvar Device = function Device() {\n var ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent;\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].phonegap,\n phonegap: ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].cordova || ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].phonegap\n };\n var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/); // Windows\n\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // iOS\n\n\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n } // iOS 8+ changed UA\n\n\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n } // Desktop\n\n\n device.desktop = !(device.os || device.android || device.webView); // Webview\n\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i); // Minimal UI\n\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView && (ipod || iphone) && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n } // Pixel Ratio\n\n\n device.pixelRatio = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].devicePixelRatio || 1; // Export object\n\n return device;\n}();\n\nfunction onTouchStart(event) {\n var swiper = this;\n var data$$1 = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n data$$1.isTouchEvent = e.type === 'touchstart';\n if (!data$$1.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data$$1.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data$$1.isTouched && data$$1.isMoved) return;\n\n if (params.noSwiping && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : \".\".concat(params.noSwipingClass))[0]) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e).closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].screen.width - edgeSwipeThreshold)) {\n return;\n }\n\n Utils.extend(data$$1, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data$$1.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data$$1.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if (Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).is(data$$1.formElements)) preventDefault = false;\n\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement).is(data$$1.formElements) && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement !== e.target) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n var swiper = this;\n var data$$1 = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data$$1.isTouched) {\n if (data$$1.startMoving && data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data$$1.isTouchEvent && e.type === 'mousemove') return;\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data$$1.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data$$1.touchStartTime = Utils.now();\n }\n\n return;\n }\n\n if (data$$1.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data$$1.isTouchEvent && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement) {\n if (e.target === ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].activeElement && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).is(data$$1.formElements)) {\n data$$1.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data$$1.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data$$1.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data$$1.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data$$1.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data$$1.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data$$1.startMoving = true;\n }\n }\n\n if (data$$1.isScrolling) {\n data$$1.isTouched = false;\n return;\n }\n\n if (!data$$1.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n e.preventDefault();\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data$$1.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data$$1.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data$$1.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data$$1.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data$$1.currentTranslate = diff + data$$1.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data$$1.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data$$1.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data$$1.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data$$1.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data$$1.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data$$1.currentTranslate < data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data$$1.currentTranslate > data$$1.startTranslate) {\n data$$1.currentTranslate = data$$1.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data$$1.allowThresholdMove) {\n if (!data$$1.allowThresholdMove) {\n data$$1.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data$$1.currentTranslate = data$$1.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data$$1.currentTranslate = data$$1.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data$$1.velocities.length === 0) {\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data$$1.touchStartTime\n });\n }\n\n data$$1.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data$$1.currentTranslate); // Update translate\n\n swiper.setTranslate(data$$1.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n var swiper = this;\n var data$$1 = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data$$1.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data$$1.allowTouchCallbacks = false;\n\n if (!data$$1.isTouched) {\n if (data$$1.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data$$1.isMoved && data$$1.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data$$1.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n\n if (timeDiff < 300 && touchEndTime - data$$1.lastClickTime > 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n data$$1.clickTimeout = Utils.nextTick(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.emit('click', e);\n }, 300);\n }\n\n if (timeDiff < 300 && touchEndTime - data$$1.lastClickTime < 300) {\n if (data$$1.clickTimeout) clearTimeout(data$$1.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n\n data$$1.lastClickTime = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data$$1.isTouched || !data$$1.isMoved || !swiper.swipeDirection || touches.diff === 0 || data$$1.currentTranslate === data$$1.startTranslate) {\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n return;\n }\n\n data$$1.isTouched = false;\n data$$1.isMoved = false;\n data$$1.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data$$1.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data$$1.velocities.length > 1) {\n var lastMoveEvent = data$$1.velocities.pop();\n var velocityEvent = data$$1.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || Utils.now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data$$1.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data$$1.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data$$1.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n var swiper = this;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction attachEvents() {\n var swiper = this;\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl;\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested; // Touch Events\n\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n\n if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener('mousemove', swiper.onTouchMove, capture);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n } // Resize handler\n\n swiper.on(Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n}\n\nfunction detachEvents() {\n var swiper = this;\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl;\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested; // Touch Events\n\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n\n if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener('mousemove', swiper.onTouchMove, capture);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n } // Resize handler\n\n swiper.off(Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nvar events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};\n\nfunction setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Set breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var needsReLoop = params.loop && breakpointParams.slidesPerView !== params.slidesPerView;\n Utils.extend(swiper.params, breakpointParams);\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n\nfunction getBreakpoint(breakpoints) {\n var swiper = this; // Get breakpoint for window width\n\n if (!breakpoints) return undefined;\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) {\n return parseInt(a, 10) - parseInt(b, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n\n if (swiper.params.breakpointsInverse) {\n if (point <= ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].innerWidth) {\n breakpoint = point;\n }\n } else if (point >= ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};\n\nvar Browser = function Browser() {\n function isSafari() {\n var ua = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isIE: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent.match(/Trident/g) || !!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent.match(/MSIE/g),\n isEdge: !!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent)\n };\n}();\n\nfunction addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el;\n var suffixes = [];\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n\n if (rtl) {\n suffixes.push('rtl');\n }\n\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n\n if (Device.android) {\n suffixes.push('android');\n }\n\n if (Device.ios) {\n suffixes.push('ios');\n } // WP8 Touch Events Fix\n\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(\"wp8-\".concat(params.direction));\n }\n\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = {\n addClasses: addClasses,\n removeClasses: removeClasses\n};\n\nfunction loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}\n\nvar images = {\n loadImage: loadImage,\n preloadImages: preloadImages\n};\n\nfunction checkOverflow() {\n var swiper = this;\n var wasLocked = swiper.isLocked;\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = {\n checkOverflow: checkOverflow\n};\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsInverse: false,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true\n};\nvar prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper =\n/*#__PURE__*/\nfunction (_SwiperClass) {\n _inherits(Swiper, _SwiperClass);\n\n function Swiper() {\n var _this;\n\n _classCallCheck(this, Swiper);\n\n var el;\n var params;\n\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Swiper).call(this, params));\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n }); // Swiper Instance\n\n var swiper = _assertThisInitialized(_assertThisInitialized(_this));\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (_typeof(moduleParams) !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (_typeof(params[moduleParamName]) === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params); // Save Dom lib\n\n swiper.$ = dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"]; // Find el\n\n var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return _possibleConstructorReturn(_this, undefined);\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index$$1, containerEl) {\n var newParams = Utils.extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return _possibleConstructorReturn(_this, swipers);\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper); // Find Wrapper\n\n var $wrapperEl = $el.children(\".\".concat(swiper.params.wrapperClass)); // Extend Swiper\n\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n // Classes\n classNames: [],\n // Slides\n slides: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules(); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return _possibleConstructorReturn(_this, swiper);\n }\n\n _createClass(Swiper, [{\n key: \"slidesPerViewDynamic\",\n value: function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i7 = activeIndex - 1; _i7 >= 0; _i7 -= 1) {\n if (slides[_i7] && !breakLoop) {\n slideSize += slides[_i7].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i8 = activeIndex + 1; _i8 < slides.length; _i8 += 1) {\n if (slidesGrid[_i8] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n }\n }, {\n key: \"update\",\n value: function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n }, {\n key: \"init\",\n value: function init() {\n var swiper = this;\n if (swiper.initialized) return;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var deleteInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cleanStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index').removeAttr('data-swiper-column').removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n }], [{\n key: \"extendDefaults\",\n value: function extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n }, {\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }, {\n key: \"Class\",\n get: function get() {\n return SwiperClass;\n }\n }, {\n key: \"$\",\n get: function get() {\n return dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"];\n }\n }]);\n\n return Swiper;\n}(SwiperClass);\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device\n },\n static: {\n device: Device\n }\n};\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support\n },\n static: {\n support: Support\n }\n};\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser\n },\n static: {\n browser: Browser\n }\n};\nvar Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this; // Emit resize\n\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].removeEventListener('resize', swiper.resize.resizeHandler);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};\nvar Observer = {\n func: ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].MutationObserver || ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].WebkitMutationObserver,\n attach: function attach(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var swiper = this;\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].requestAnimationFrame) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].requestAnimationFrame(observerUpdate);\n } else {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: false\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: []\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n }\n }\n};\nvar Virtual = {\n update: function update(force) {\n var swiper = this;\n var _swiper$params = swiper.params,\n slidesPerView = _swiper$params.slidesPerView,\n slidesPerGroup = _swiper$params.slidesPerGroup,\n centeredSlides = _swiper$params.centeredSlides;\n var _swiper$params$virtua = swiper.params.virtual,\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\n var _swiper$virtual = swiper.virtual,\n previousFrom = _swiper$virtual.from,\n previousTo = _swiper$virtual.to,\n slides = _swiper$virtual.slides,\n previousSlidesGrid = _swiper$virtual.slidesGrid,\n renderSlide = _swiper$virtual.renderSlide,\n previousOffset = _swiper$virtual.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n var offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n var slidesAfter;\n var slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset$$1 = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: offset$$1,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset$$1 !== previousOffset) {\n swiper.slides.css(offsetProp, \"\".concat(offset$$1, \"px\"));\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset$$1,\n from: from,\n to: to,\n slides: function getSlides() {\n var slidesToRender = [];\n\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n onRendered();\n return;\n }\n\n var prependIndexes = [];\n var appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(\".\".concat(swiper.params.slideClass)).remove();\n } else {\n for (var i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(\".\".concat(swiper.params.slideClass, \"[data-swiper-slide-index=\\\"\").concat(i, \"\\\"]\")).remove();\n }\n }\n }\n\n for (var _i9 = 0; _i9 < slides.length; _i9 += 1) {\n if (_i9 >= from && _i9 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(_i9);\n } else {\n if (_i9 > previousTo) appendIndexes.push(_i9);\n if (_i9 < previousFrom) prependIndexes.push(_i9);\n }\n }\n }\n\n appendIndexes.forEach(function (index$$1) {\n swiper.$wrapperEl.append(renderSlide(slides[index$$1], index$$1));\n });\n prependIndexes.sort(function (a, b) {\n return b - a;\n }).forEach(function (index$$1) {\n swiper.$wrapperEl.prepend(renderSlide(slides[index$$1], index$$1));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, \"\".concat(offset$$1, \"px\"));\n onRendered();\n },\n renderSlide: function renderSlide(slide, index$$1) {\n var swiper = this;\n var params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index$$1]) {\n return swiper.virtual.cache[index$$1];\n }\n\n var $slideEl = params.renderSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(params.renderSlide.call(swiper, slide, index$$1)) : Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"\".concat(swiper.params.slideClass, \"\\\" data-swiper-slide-index=\\\"\").concat(index$$1, \"\\\">\").concat(slide, \"</div>\"));\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index$$1);\n if (params.cache) swiper.virtual.cache[index$$1] = $slideEl;\n return $slideEl;\n },\n appendSlide: function appendSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.push(slide);\n swiper.virtual.update(true);\n },\n prependSlide: function prependSlide(slide) {\n var swiper = this;\n swiper.virtual.slides.unshift(slide);\n\n if (swiper.params.virtual.cache) {\n var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n newCache[cachedIndex + 1] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n\n swiper.virtual.update(true);\n swiper.slideNext(0);\n }\n};\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {}\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"virtual\"));\n var overwriteParams = {\n watchSlidesProgress: true\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n }\n }\n};\nvar Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var kc = e.keyCode || e.charCode; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && kc === 39 || swiper.isVertical() && kc === 40)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && kc === 37 || swiper.isVertical() && kc === 38)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n 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')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n var inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(\".\".concat(swiper.params.slideClass)).length > 0 && swiper.$el.parents(\".\".concat(swiper.params.slideActiveClass)).length === 0) {\n return undefined;\n }\n\n var windowWidth = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].innerWidth;\n var windowHeight = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (var i = 0; i < swiperCoord.length; i += 1) {\n var point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (kc === 39 && !rtl || kc === 37 && rtl) swiper.slideNext();\n if (kc === 37 && !rtl || kc === 39 && rtl) swiper.slidePrev();\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (kc === 40) swiper.slideNext();\n if (kc === 38) swiper.slidePrev();\n }\n\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable: function enable() {\n var swiper = this;\n if (swiper.keyboard.enabled) return;\n Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"]).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n if (!swiper.keyboard.enabled) return;\n Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"]).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n }\n};\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper)\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n }\n }\n};\n\nfunction isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"];\n\n if (!isSupported) {\n var element = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].implementation && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].implementation.hasFeature // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].implementation.hasFeature('', '') !== true) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nvar Mousewheel = {\n lastScrollTime: Utils.now(),\n event: function getEvent() {\n if (ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }(),\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n var sX = 0;\n var sY = 0; // spinX, spinY\n\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n },\n handleMouseEnter: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n if (!swiper.mouseEntered && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n var data$$1 = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY)) delta = data$$1.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data$$1.pixelY) > Math.abs(data$$1.pixelX)) delta = data$$1.pixelY;else return true;\n } else {\n delta = Math.abs(data$$1.pixelX) > Math.abs(data$$1.pixelY) ? -data$$1.pixelX * rtlFactor : -data$$1.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n }\n\n swiper.mousewheel.lastScrollTime = new ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].Date().getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n var position = swiper.getTranslate() + delta * params.sensitivity;\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n swiper.slideToClosest();\n }, 300);\n } // Emit event\n\n\n swiper.emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n },\n enable: function enable() {\n var swiper = this;\n if (!Mousewheel.event) return false;\n if (swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.params.mousewheel.eventsTarged);\n }\n\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function disable() {\n var swiper = this;\n if (!Mousewheel.event) return false;\n if (!swiper.mousewheel.enabled) return false;\n var target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.params.mousewheel.eventsTarged);\n }\n\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n }\n};\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n lastScrollTime: Utils.now()\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n }\n }\n};\nvar Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper)\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if (swiper.params.navigation.hideOnClick && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).is($prevEl) && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).is($nextEl)) {\n if ($nextEl) $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n if ($prevEl) $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n};\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', \"\".concat(swiper.pagination.bulletSize * (params.dynamicMainBullets + 4), \"px\"));\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(\"\".concat(params.bulletActiveClass, \" \").concat(params.bulletActiveClass, \"-next \").concat(params.bulletActiveClass, \"-next-next \").concat(params.bulletActiveClass, \"-prev \").concat(params.bulletActiveClass, \"-prev-prev \").concat(params.bulletActiveClass, \"-main\"));\n\n if ($el.length > 1) {\n bullets.each(function (index$$1, bullet) {\n var $bullet = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(\"\".concat(params.bulletActiveClass, \"-main\"));\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(\"\".concat(params.bulletActiveClass, \"-prev\")).prev().addClass(\"\".concat(params.bulletActiveClass, \"-prev-prev\"));\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(\"\".concat(params.bulletActiveClass, \"-next\")).next().addClass(\"\".concat(params.bulletActiveClass, \"-next-next\"));\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(\"\".concat(params.bulletActiveClass, \"-main\"));\n }\n\n $firstDisplayedBullet.prev().addClass(\"\".concat(params.bulletActiveClass, \"-prev\")).prev().addClass(\"\".concat(params.bulletActiveClass, \"-prev-prev\"));\n $lastDisplayedBullet.next().addClass(\"\".concat(params.bulletActiveClass, \"-next\")).next().addClass(\"\".concat(params.bulletActiveClass, \"-next-next\"));\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', \"\".concat(bulletsOffset, \"px\"));\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(\".\".concat(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(\".\".concat(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(\".\".concat(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\".concat(scaleX, \") scaleY(\").concat(scaleY, \")\")).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\".concat(params.bulletElement, \" class=\\\"\").concat(params.bulletClass, \"\\\"></\").concat(params.bulletElement, \">\");\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(\".\".concat(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"<span class=\\\"\".concat(params.currentClass, \"\\\"></span>\") + ' / ' + \"<span class=\\\"\".concat(params.totalClass, \"\\\"></span>\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"<span class=\\\"\".concat(params.progressbarFillClass, \"\\\"></span>\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && swiper.$el.find(params.el).length === 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\".concat(params.modifierClass).concat(params.type, \"-dynamic\"));\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', \".\".concat(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index$$1 = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index$$1 += swiper.loopedSlides;\n swiper.slideTo(index$$1);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', \".\".concat(params.bulletClass));\n }\n }\n};\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var swiper = this;\n\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange() {\n var swiper = this;\n\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var swiper = this;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).hasClass(swiper.params.pagination.bulletClass)) {\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};\nvar Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate,\n progress = swiper.progress;\n var dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize,\n $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(\"translate3d(\".concat(newPos, \"px, 0, 0)\"));\n } else {\n $dragEl.transform(\"translateX(\".concat(newPos, \"px)\"));\n }\n\n $dragEl[0].style.width = \"\".concat(newSize, \"px\");\n } else {\n if (Support.transforms3d) {\n $dragEl.transform(\"translate3d(0px, \".concat(newPos, \"px, 0)\"));\n } else {\n $dragEl.transform(\"translateY(\".concat(newPos, \"px)\"));\n }\n\n $dragEl[0].style.height = \"\".concat(newSize, \"px\");\n }\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl,\n $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = \"\".concat(dragSize, \"px\");\n } else {\n $dragEl[0].style.height = \"\".concat(dragSize, \"px\");\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbarHide) {\n $el[0].style.opacity = 0;\n }\n\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el,\n dragSize = scrollbar.dragSize,\n trackSize = scrollbar.trackSize;\n var pointerPosition;\n\n if (swiper.isHorizontal()) {\n pointerPosition = e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX || e.clientX;\n } else {\n pointerPosition = e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY || e.clientY;\n }\n\n var positionRatio;\n positionRatio = (pointerPosition - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - dragSize / 2) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar,\n $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el,\n $dragEl = scrollbar.$dragEl;\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function onDragEnd(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $el = scrollbar.$el;\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n swiper.emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n touchEventsTouch = swiper.touchEventsTouch,\n touchEventsDesktop = swiper.touchEventsDesktop,\n params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) return;\n var scrollbar = swiper.scrollbar,\n $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n var $dragEl = $el.find(\".\".concat(swiper.params.scrollbar.dragClass));\n\n if ($dragEl.length === 0) {\n $dragEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"\".concat(swiper.params.scrollbar.dragClass, \"\\\"></div>\"));\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n }\n};\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n }\n }\n};\nvar Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n var $el = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(el);\n var rtlFactor = rtl ? -1 : 1;\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = \"\".concat(parseInt(x, 10) * progress * rtlFactor, \"%\");\n } else {\n x = \"\".concat(x * progress * rtlFactor, \"px\");\n }\n\n if (y.indexOf('%') >= 0) {\n y = \"\".concat(parseInt(y, 10) * progress, \"%\");\n } else {\n y = \"\".concat(y * progress, \"px\");\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(\"translate3d(\".concat(x, \", \").concat(y, \", 0px)\"));\n } else {\n var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(\"translate3d(\".concat(x, \", \").concat(y, \", 0px) scale(\").concat(currentScale, \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides,\n progress = swiper.progress,\n snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function (index$$1, parallaxEl) {\n var $parallaxEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n }\n};\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax) return;\n swiper.parallax.setTransition(duration);\n }\n }\n};\nvar Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\".concat(params.containerClass));\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (Support.gestures) {\n swiper.zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\n }\n\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\".concat(zoom.scale, \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android) {\n return;\n }\n\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\".concat(zoom.scale, \")\"));\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n } // Define if we need image drag\n\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(\"translate3d(\".concat(image.currentX, \"px, \").concat(image.currentY, \"px,0)\"));\n },\n onTouchEnd: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture,\n image = zoom.image,\n velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\".concat(image.currentX, \"px, \").concat(image.currentY, \"px,0)\"));\n },\n onTransitionEnd: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n zoom.scale = 1;\n zoom.currentScale = 1;\n }\n },\n // Toggle Zoom\n toggle: function toggle(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function _in(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture,\n image = zoom.image;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\".concat(params.containerClass));\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n gesture.$slideEl.addClass(\"\".concat(params.zoomedSlideClass));\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px,0)\"));\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\".concat(zoom.scale, \")\"));\n },\n out: function out() {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\".concat(params.containerClass));\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(\"\".concat(params.zoomedSlideClass));\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false; // Scale image\n\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\".concat(swiper.params.zoom.containerClass), zoom.onTouchMove);\n },\n disable: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) return;\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false; // Scale image\n\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\".concat(swiper.params.zoom.containerClass), zoom.onTouchMove);\n }\n};\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n },\n create: function create() {\n var swiper = this;\n var zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n }\n };\n 'onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out'.split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n }\n }\n};\nvar Lazy = {\n loadInSlide: function loadInSlide(index$$1) {\n var loadInDuplicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index$$1 === 'undefined') return;\n if (swiper.slides.length === 0) return;\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\".concat(swiper.params.slideClass, \"[data-swiper-slide-index=\\\"\").concat(index$$1, \"\\\"]\")) : swiper.slides.eq(index$$1);\n var $images = $slideEl.find(\".\".concat(params.elementClass, \":not(.\").concat(params.loadedClass, \"):not(.\").concat(params.loadingClass, \")\"));\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(function (imageIndex, imageEl) {\n var $imageEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(imageEl);\n $imageEl.addClass(params.loadingClass);\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', \"url(\\\"\".concat(background, \"\\\")\"));\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(\".\".concat(params.preloaderClass)).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\".concat(slideOriginalIndex, \"\\\"]:not(.\").concat(swiper.params.slideDuplicateClass, \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var duplicatedSlide = swiper.$wrapperEl.children(\".\".concat(swiper.params.slideDuplicateClass, \"[data-swiper-slide-index=\\\"\").concat(slideOriginalIndex, \"\\\"]\"));\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n swiperParams = swiper.params,\n slides = swiper.slides,\n activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n var slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index$$1) {\n if (isVirtual) {\n if ($wrapperEl.children(\".\".concat(swiperParams.slideClass, \"[data-swiper-slide-index=\\\"\").concat(index$$1, \"\\\"]\")).length) {\n return true;\n }\n } else if (slides[index$$1]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(slideEl).attr('data-swiper-slide-index');\n }\n\n return Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(\".\".concat(swiperParams.slideVisibleClass)).each(function (elIndex, slideEl) {\n var index$$1 = 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();\n swiper.lazy.loadInSlide(index$$1);\n });\n } else if (slidesPerView > 1) {\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (var _i10 = activeIndex + slidesPerView; _i10 < maxIndex; _i10 += 1) {\n if (slideExist(_i10)) swiper.lazy.loadInSlide(_i10);\n } // Prev Slides\n\n\n for (var _i11 = minIndex; _i11 < activeIndex; _i11 += 1) {\n if (slideExist(_i11)) swiper.lazy.loadInSlide(_i11);\n }\n } else {\n var nextSlide = $wrapperEl.children(\".\".concat(swiperParams.slideNextClass));\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n var prevSlide = $wrapperEl.children(\".\".concat(swiperParams.slidePrevClass));\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n};\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n }\n }\n};\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nvar Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(_setTranslate, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n Utils.nextTick(function () {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper)\n }\n });\n },\n on: {\n update: function update() {\n var swiper = this;\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n }\n }\n};\nvar a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n var $targetEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(\".\".concat(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n },\n notify: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n if (swiper.params.loop) return;\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $bulletEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init: function init() {\n var swiper = this;\n swiper.$el.append(swiper.a11y.liveRegion); // Navigation\n\n var params = swiper.params.a11y;\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', \".\".concat(swiper.params.pagination.bulletClass), swiper.a11y.onEnterKey);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n var $nextEl;\n var $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n } // Pagination\n\n\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', \".\".concat(swiper.params.pagination.bulletClass), swiper.a11y.onEnterKey);\n }\n }\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<span class=\\\"\".concat(swiper.params.a11y.notificationClass, \"\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"></span>\"))\n }\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n }\n }\n};\nvar History = {\n init: function init() {\n var swiper = this;\n if (!swiper.params.history) return;\n\n if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history || !ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n var history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (!swiper.params.history.replaceState) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues() {\n var pathArray = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].location.pathname.slice(1).split('/').filter(function (part) {\n return part !== '';\n });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n },\n setHistory: function setHistory(key, index$$1) {\n var swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n var slide = swiper.slides.eq(index$$1);\n var value = History.slugify(slide.attr('data-history'));\n\n if (!ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].location.pathname.includes(key)) {\n value = \"\".concat(key, \"/\").concat(value);\n }\n\n var currentState = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.replaceState({\n value: value\n }, null, value);\n } else {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.pushState({\n value: value\n }, null, value);\n }\n },\n slugify: function slugify(text$$1) {\n return text$$1.toString().toLowerCase().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var _slide3 = swiper.slides.eq(i);\n\n var slideHistory = History.slugify(_slide3.attr('data-history'));\n\n if (slideHistory === value && !_slide3.hasClass(swiper.params.slideDuplicateClass)) {\n var index$$1 = _slide3.index();\n\n swiper.slideTo(index$$1, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n }\n};\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper)\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n }\n }\n};\nvar HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n var newHash = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n var newIndex = swiper.$wrapperEl.children(\".\".concat(swiper.params.slideClass, \"[data-hash=\\\"\").concat(newHash, \"\\\"]\")).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash: function setHash() {\n var swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history && ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.replaceState) {\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"].history.replaceState(null, null, \"#\".concat(swiper.slides.eq(swiper.activeIndex).attr('data-hash')) || false);\n } else {\n var _slide4 = swiper.slides.eq(swiper.activeIndex);\n\n var hash = _slide4.attr('data-hash') || _slide4.attr('data-history');\n\n ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].location.hash = hash || '';\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n swiper.hashNavigation.initialized = true;\n var hash = ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"document\"].location.hash.replace('#', '');\n\n if (hash) {\n var speed = 0;\n\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var _slide5 = swiper.slides.eq(i);\n\n var slideHash = _slide5.attr('data-hash') || _slide5.attr('data-history');\n\n if (slideHash === hash && !_slide5.hasClass(swiper.params.slideDuplicateClass)) {\n var index$$1 = _slide5.index();\n\n swiper.slideTo(index$$1, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"]).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.hashNavigation.watchState) {\n Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(ssr_window__WEBPACK_IMPORTED_MODULE_1__[\"window\"]).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n }\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper)\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n }\n }\n};\n/* eslint no-underscore-dangle: \"off\" */\n\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n swiper.autoplay.timeout = Utils.nextTick(function () {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n }\n};\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd: function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n }\n }\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var swiper = this;\n\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove() {\n var swiper = this;\n\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy: function destroy() {\n var swiper = this;\n\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n }\n }\n};\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset$$1 = $slideEl[0].swiperSlideOffset;\n var tx = -offset$$1;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\".concat(tx, \"px, \").concat(ty, \"px, 0px)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"fade\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};\nvar Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides,\n swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n rtl = swiper.rtlTranslate,\n swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: \"\".concat(swiperWidth, \"px\")\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n var transform$$1 = \"rotateX(\".concat(isHorizontal ? 0 : -slideAngle, \"deg) rotateY(\").concat(isHorizontal ? slideAngle : 0, \"deg) translate3d(\").concat(tx, \"px, \").concat(ty, \"px, \").concat(tz, \"px)\");\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform$$1);\n\n if (params.slideShadows) {\n // Set shadows\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(isHorizontal ? 'left' : 'top', \"\\\"></div>\"));\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(isHorizontal ? 'right' : 'bottom', \"\\\"></div>\"));\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': \"50% 50% -\".concat(swiperSize / 2, \"px\"),\n '-moz-transform-origin': \"50% 50% -\".concat(swiperSize / 2, \"px\"),\n '-ms-transform-origin': \"50% 50% -\".concat(swiperSize / 2, \"px\"),\n 'transform-origin': \"50% 50% -\".concat(swiperSize / 2, \"px\")\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\"translate3d(0px, \".concat(swiperWidth / 2 + params.shadowOffset, \"px, \").concat(-swiperWidth / 2, \"px) rotateX(90deg) rotateZ(0deg) scale(\").concat(params.shadowScale, \")\"));\n } else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var offset$$1 = params.shadowOffset;\n $cubeShadowEl.transform(\"scale3d(\".concat(scale1, \", 1, \").concat(scale2, \") translate3d(0px, \").concat(swiperHeight / 2 + offset$$1, \"px, \").concat(-swiperHeight / 2 / scale2, \"px) rotateX(-90deg)\"));\n }\n }\n\n var zFactor = Browser.isSafari || Browser.isUiWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\"translate3d(0px,0,\".concat(zFactor, \"px) rotateX(\").concat(swiper.isHorizontal() ? 0 : wrapperRotate, \"deg) rotateY(\").concat(swiper.isHorizontal() ? -wrapperRotate : 0, \"deg)\"));\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el,\n slides = swiper.slides;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n }\n};\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"cube\"));\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n }\n }\n};\nvar Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n var offset$$1 = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset$$1;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(swiper.isHorizontal() ? 'left' : 'top', \"\\\"></div>\"));\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(swiper.isHorizontal() ? 'right' : 'bottom', \"\\\"></div>\"));\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n $slideEl.transform(\"translate3d(\".concat(tx, \"px, \").concat(ty, \"px, 0px) rotateX(\").concat(rotateX, \"deg) rotateY(\").concat(rotateY, \"deg)\"));\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n activeIndex = swiper.activeIndex,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false; // eslint-disable-next-line\n\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"flip\"));\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"3d\"));\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n }\n }\n};\nvar Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl,\n slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform$$1 = swiper.translate;\n var center = isHorizontal ? -transform$$1 + swiperWidth / 2 : -transform$$1 + swiperHeight / 2;\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth; // Each slide offset from center\n\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n var translateZ = -translate * Math.abs(offsetMultiplier);\n var translateY = isHorizontal ? 0 : params.stretch * offsetMultiplier;\n var translateX = isHorizontal ? params.stretch * offsetMultiplier : 0; // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n var slideTransform = \"translate3d(\".concat(translateX, \"px,\").concat(translateY, \"px,\").concat(translateZ, \"px) rotateX(\").concat(rotateX, \"deg) rotateY(\").concat(rotateY, \"deg)\");\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(isHorizontal ? 'left' : 'top', \"\\\"></div>\"));\n $slideEl.append($shadowBeforeEl);\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(\"<div class=\\\"swiper-slide-shadow-\".concat(isHorizontal ? 'right' : 'bottom', \"\\\"></div>\"));\n $slideEl.append($shadowAfterEl);\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n } // Set correct perspective for IE10\n\n\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = \"\".concat(center, \"px 50%\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n};\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"coverflow\"));\n swiper.classNames.push(\"\".concat(swiper.params.containerModifierClass, \"3d\"));\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n }\n }\n};\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n var SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(Object(dom7_dist_dom7_modular__WEBPACK_IMPORTED_MODULE_0__[\"$\"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\".concat(slideToIndex, \"\\\"]\")).eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\".concat(slideToIndex, \"\\\"]\")).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\".concat(swiper.realIndex, \"\\\"]\")).eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\".concat(swiper.realIndex, \"\\\"]\")).eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;\n } else {\n newThumbsIndex = swiper.realIndex;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\".concat(swiper.realIndex + i, \"\\\"]\")).addClass(thumbActiveClass);\n }\n } else {\n for (var _i12 = 0; _i12 < thumbsToActivate; _i12 += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i12).addClass(thumbActiveClass);\n }\n }\n }\n};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper)\n }\n });\n },\n on: {\n beforeInit: function beforeInit() {\n var swiper = this;\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n}; // Swiper Class\n\nvar components = [Device$1, Support$1, Browser$1, Resize, Observer$1, Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Swiper);\n\n//# sourceURL=webpack:///./node_modules/swiper/dist/js/swiper.esm.bundle.js?");
/***/ }),
/***/ "./node_modules/tabbable/index.js":
/*!****************************************!*\
!*** ./node_modules/tabbable/index.js ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("var candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];\nvar candidateSelector = candidateSelectors.join(',');\nvar matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n var elementDocument = el.ownerDocument || el;\n var regularTabbables = [];\n var orderedTabbables = [];\n var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n candidateTabindex = getTabindex(candidate);\n\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate\n });\n }\n }\n\n var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function (a) {\n return a.node;\n }).concat(regularTabbables);\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n if (!isNodeMatchingSelectorFocusable(node, untouchabilityChecker) || isNonTabbableRadio(node) || getTabindex(node) < 0) {\n return false;\n }\n\n return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n\n if (node.disabled || isHiddenInput(node) || untouchabilityChecker.isUntouchable(node)) {\n return false;\n }\n\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\n\nfunction isFocusable(node, untouchabilityChecker) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr; // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n} // Array.prototype.find not available in IE.\n\n\nfunction find(list, predicate) {\n for (var i = 0, length = list.length; i < length; i++) {\n if (predicate(list[i])) return list[i];\n }\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true; // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n} // An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\n\n\nfunction UntouchabilityChecker(elementDocument) {\n this.doc = elementDocument; // Node cache must be refreshed on every check, in case\n // the content of the element has changed. The cache contains tuples\n // mapping nodes to their boolean result.\n\n this.cache = [];\n} // getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\n\n\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n if (node === this.doc.documentElement) return false; // Search for a cached result.\n\n var cached = find(this.cache, function (item) {\n return item === node;\n });\n if (cached) return cached[1];\n nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = this.hasDisplayNone(node.parentNode);\n }\n\n this.cache.push([node, result]);\n return result;\n};\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n if (node === this.doc.documentElement) return false;\n var computedStyle = this.doc.defaultView.getComputedStyle(node);\n if (this.hasDisplayNone(node, computedStyle)) return true;\n return computedStyle.visibility === 'hidden';\n};\n\nmodule.exports = tabbable;\n\n//# sourceURL=webpack:///./node_modules/tabbable/index.js?");
/***/ }),
/***/ "./node_modules/transition-to-from-auto/lib/transition-to-from-auto.js":
/*!*****************************************************************************!*\
!*** ./node_modules/transition-to-from-auto/lib/transition-to-from-auto.js ***!
\*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\r\n@module\r\n@alias transition\r\n*/\n(function (window, document) {\n \"use strict\";\n\n var getComputedStyle = window.getComputedStyle;\n var isTransition = \"data-ttfaInTransition\";\n var elements = [];\n var data = []; // Transition detecting\n\n var transitionProp = false;\n var transitionEnd = false;\n var testStyle = document.createElement(\"a\").style;\n var testProp;\n\n if (testStyle[testProp = \"webkitTransition\"] !== undefined) {\n transitionProp = testProp;\n transitionEnd = testProp + \"End\";\n }\n\n if (testStyle[testProp = \"transition\"] !== undefined) {\n transitionProp = testProp;\n transitionEnd = testProp + \"end\";\n }\n\n function process(options, data) {\n var el = options.element;\n var val = options.val;\n var prop = options.prop;\n var style = el.style;\n var startVal;\n var autoVal;\n\n if (!transitionProp) {\n return style[prop] = val;\n }\n\n if (el.hasAttribute(isTransition)) {\n el.removeEventListener(transitionEnd, data.l);\n } else {\n style[transitionProp] = \"none\";\n startVal = getComputedStyle(el)[prop];\n style[prop] = \"auto\";\n autoVal = getComputedStyle(el)[prop]; // Interrupt\n\n if (startVal === val || val === \"auto\" && startVal === autoVal) {\n return;\n }\n\n data.auto = autoVal;\n el.setAttribute(isTransition, 1); // Transition\n\n style[prop] = startVal;\n el.offsetWidth;\n style[transitionProp] = options.style;\n }\n\n style[prop] = val === \"auto\" ? data.auto : val;\n\n data.l = function (e) {\n if (e.propertyName === prop) {\n el.removeAttribute(isTransition);\n el.removeEventListener(transitionEnd, data.l);\n\n if (val === \"auto\") {\n /* avoid transition flashes in Safari */\n style[transitionProp] = \"none\";\n style[prop] = val;\n }\n }\n };\n\n el.addEventListener(transitionEnd, data.l);\n }\n /**\r\n @param options {Object}\r\n @param options.element {string | element} - The DOM element or selector to transition\r\n @param options.val {string} - The value you want to transition to\r\n @param [options.prop] {string} - The CSS property to transition, defaults to `\"height\"`\r\n @param [options.style] {string} - The desired value for the `transition` CSS property (e.g. `\"height 1s\"`). If specified, this value is added inline and will override your CSS. Leave this value blank if you already have it defined in your stylesheet. \r\n @alias module:transition-to-from-auto\r\n */\n\n\n function transition(options) {\n var element = options.element;\n var datum;\n var index;\n\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n\n element = options.element = element instanceof Node ? element : false;\n options.prop = options.prop || \"height\";\n options.style = options.style || \"\";\n\n if (element) {\n index = elements.indexOf(element);\n\n if (~index) {\n datum = data[index];\n } else {\n datum = {};\n elements.push(element);\n data.push(datum);\n }\n\n process(options, datum);\n }\n }\n /**\r\n The name of the vendor-specific transition CSS property\r\n @type {string} \r\n @example\r\n el.style[transition.prop + 'Duration'] = '1s';\r\n */\n\n\n transition.prop = transitionProp;\n /**\r\n * The name of the [transition end event](https://developer.mozilla.org/en-US/docs/Web/Events/transitionend) in the current browser (typically `\"transitionend\"` or `\"webkitTransitionEnd\"`)\r\n * @type {string} \r\n * @example\r\n * el.addEventListener(transition.end, function(){\r\n * // the transition ended..\r\n * });\r\n */\n\n transition.end = transitionEnd;\n\n if (( false ? undefined : _typeof(module)) === \"object\" && module.exports) {\n module.exports = transition;\n } else if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return transition;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(window, document);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/transition-to-from-auto/lib/transition-to-from-auto.js?");
/***/ }),
/***/ "./node_modules/webpack/buildin/module.js":
/*!***********************************!*\
!*** (webpack)/buildin/module.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n//# sourceURL=webpack:///(webpack)/buildin/module.js?");
/***/ }),
/***/ "./node_modules/xtend/immutable.js":
/*!*****************************************!*\
!*** ./node_modules/xtend/immutable.js ***!
\*****************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}\n\n//# sourceURL=webpack:///./node_modules/xtend/immutable.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/connectivity.js":
/*!***************************************************!*\
!*** ./src/assets/scripts/modern/connectivity.js ***!
\***************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var noty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! noty */ \"./node_modules/noty/lib/noty.js\");\n/* harmony import */ var noty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(noty__WEBPACK_IMPORTED_MODULE_0__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n\nvar is_offline = false;\nvar OFFLINE_NOTY = new noty__WEBPACK_IMPORTED_MODULE_0___default.a({\n callbacks: {\n afterClose: function afterClose() {\n // store a cookie so the user isn't nagged on every page load\n document.cookie = \"__gulp_init_namespace___offline_noty_dismissed=true; max-age=\".concat(60 * 60 * 6);\n }\n },\n text: l10n.noty.offline.text,\n theme: false\n});\n\nvar UPDATE_STATUS = function UPDATE_STATUS() {\n if (typeof navigator.onLine !== \"undefined\") {\n is_offline = !navigator.onLine;\n\n if (is_offline) {\n // check a cookie so the user isn't nagged on every page load\n if (!document.cookie.match(/__gulp_init_namespace___offline_noty_dismissed=true/)) {\n OFFLINE_NOTY.show();\n } // add is-offline class\n\n\n document.documentElement.classList.add(\"is-offline\");\n } else {\n OFFLINE_NOTY.close(); // set the cookie to false so that prompt will appear again next time they go offline\n\n document.cookie = \"__gulp_init_namespace___offline_noty_dismissed=false; max-age=\".concat(60 * 60 * 6); // remove is-offline class\n\n document.documentElement.classList.remove(\"is-offline\");\n }\n }\n};\n\nvar CHECK_CONNECTIVITY = function CHECK_CONNECTIVITY() {\n UPDATE_STATUS();\n window.addEventListener(\"online\", UPDATE_STATUS);\n window.addEventListener(\"offline\", UPDATE_STATUS);\n};\n\nwindow.addEventListener(\"load\", CHECK_CONNECTIVITY);\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/connectivity.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/focus-visible.init.js":
/*!*********************************************************!*\
!*** ./src/assets/scripts/modern/focus-visible.init.js ***!
\*********************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var focus_visible__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! focus-visible */ \"./node_modules/focus-visible/dist/focus-visible.js\");\n/* harmony import */ var focus_visible__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(focus_visible__WEBPACK_IMPORTED_MODULE_0__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/focus-visible.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/javascript.init.js":
/*!******************************************************!*\
!*** ./src/assets/scripts/modern/javascript.init.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n document.documentElement.classList.remove(\"no-javascript\");\n});\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/javascript.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/layzr.init.js":
/*!*************************************************!*\
!*** ./src/assets/scripts/modern/layzr.init.js ***!
\*************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var layzr_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! layzr.js */ \"./node_modules/layzr.js/dist/layzr.module.js\");\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n // init Layzr\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var INSTANCE = Object(layzr_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n INSTANCE.update().check().handlers(true);\n});\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/layzr.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/menu-list.js":
/*!************************************************!*\
!*** ./src/assets/scripts/modern/menu-list.js ***!
\************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var in_vp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! in-vp */ \"./node_modules/in-vp/index.js\");\n/* harmony import */ var in_vp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(in_vp__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var transition_to_from_auto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! transition-to-from-auto */ \"./node_modules/transition-to-from-auto/lib/transition-to-from-auto.js\");\n/* harmony import */ var transition_to_from_auto__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(transition_to_from_auto__WEBPACK_IMPORTED_MODULE_1__);\n// JavaScript Document\n// Scripts written by Jacob Bearce @ Weblinx, Inc.\n\n\n/**\n * Create an array of attribtes to target lists for\n */\n\nvar ATTRIBUTES = {\n classes: [\"menu-list\", \"menu-list__container--mega\"],\n datasets: [\"accordion\", \"hover\", \"touch\"]\n};\nvar SELECTORS = [];\n/**\n * Create an array out of the CLASSES and DATAS in order to reduce duplicate code.\n */\n\nATTRIBUTES.classes.forEach(function (CLASS) {\n ATTRIBUTES.datasets.forEach(function (DATA) {\n SELECTORS.push(\".\".concat(CLASS, \"[data-\").concat(DATA, \"=true]\"));\n });\n});\n/**\n * Find all MENU_LISTS which can be hovered or touched\n */\n\nvar MENU_LISTS = document.querySelectorAll(SELECTORS.join());\n/**\n * Update the label for a MENU_TOGGLE\n *\n * @param {Object} MENU_TOGGLE - A DOM object to update the label on\n */\n\nvar UPDATE_LABEL = function UPDATE_LABEL(MENU_TOGGLE) {\n var LABEL = MENU_TOGGLE.querySelector(\"span.__visuallyhidden\");\n var TEXT = LABEL.innerHTML;\n var NEXT = LABEL.dataset.alt;\n LABEL.innerHTML = NEXT;\n LABEL.dataset.alt = TEXT;\n};\n/**\n * Mark an item active\n *\n * @param {Object} LIST_ITEM - A DOM object to mark as active\n * @param {Object} MENU_LIST - A DOM object to mark as visible and reverse based on viewport\n * @param {Object} MENU_TOGGLE - A DOM object to update the label on\n * @param {Boolean} EVENT - An event to prevent from firing\n */\n\n\nvar MARK_ACTIVE = function MARK_ACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE) {\n var EVENT = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n /**\n * Prevent the EVENT from finishing unless the LIST_ITEM is already active\n */\n if (EVENT && !LIST_ITEM.classList.contains(\"is-active\")) {\n EVENT.preventDefault();\n }\n /**\n * Mark the LIST_ITEM as active\n */\n\n\n LIST_ITEM.classList.add(\"is-active\");\n /**\n * Transition open the MENU_LIST if it's an accordion\n */\n\n if (MENU_LIST.dataset.accordion === \"true\") {\n transition_to_from_auto__WEBPACK_IMPORTED_MODULE_1___default()({\n element: MENU_LIST,\n val: \"auto\"\n });\n }\n /**\n * Mark the MENU_LIST as aria-hidden=\"false\"\n */\n\n\n MENU_LIST.setAttribute(\"aria-hidden\", \"false\");\n /**\n * Reverse the MENU_LIST if it's not fully within the viewport\n */\n\n if (in_vp__WEBPACK_IMPORTED_MODULE_0___default()(MENU_LIST).fully === false) {\n MENU_LIST.classList.add(\"menu-list--reverse\");\n }\n /**\n * Update the MENU_TOGGLE label\n */\n\n\n UPDATE_LABEL(MENU_TOGGLE);\n};\n/**\n * Mark an item and its children inactive\n *\n * @param {Object} LIST_ITEM - A DOM object to mark as inactive\n * @param {Object} MENU_LIST - A DOM object to mark as hidden and unreverse\n * @param {Object} MENU_TOGGLE - A DOM object to update the label on\n */\n\n\nvar MARK_INACTIVE = function MARK_INACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE) {\n /**\n * Find any active CHILDREN\n */\n var CHILDREN = LIST_ITEM.querySelectorAll(\"is-active\");\n /**\n * Recursively mark active CHILDREN as inactive\n */\n\n if (CHILDREN.length > 0) {\n CHILDREN.foreach(function (CHILD) {\n MARK_INACTIVE(CHILD);\n });\n }\n /**\n * Mark the LIST_ITEM as inactive\n */\n\n\n LIST_ITEM.classList.remove(\"is-active\");\n /**\n * Transition open the MENU_LIST if it's an accordion\n */\n\n if (MENU_LIST.dataset.accordion === \"true\") {\n transition_to_from_auto__WEBPACK_IMPORTED_MODULE_1___default()({\n element: MENU_LIST,\n val: 0\n });\n }\n /**\n * Mark the MENU_LIST as aria-hidden=\"false\"\n */\n\n\n MENU_LIST.setAttribute(\"aria-hidden\", \"true\");\n /**\n * Unreverse the MENU_LIST\n */\n\n MENU_LIST.classList.remove(\"menu-list--reverse\");\n /**\n * Update the MENU_TOGGLE label\n */\n\n UPDATE_LABEL(MENU_TOGGLE);\n};\n/**\n * Compare two sets of coordinates to determine if the user dragged\n *\n * @param {Object} START_COORDS - The coordinates where the user started their touch\n * @param {Object} END_COORDS - The coordinates where the user ended their touch\n * @param {Integer} THRESHOLD - The minimum distance in pixels to mark something as dragged\n */\n\n\nvar DID_USER_DRAG = function DID_USER_DRAG(START_COORDS, END_COORDS) {\n var THRESHOLD = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n return Math.abs(END_COORDS.clientX - START_COORDS.clientX) > THRESHOLD || Math.abs(END_COORDS.clientY - START_COORDS.clientY) > THRESHOLD;\n};\n/**\n * Store various events to listen for\n */\n\n\nvar EVENTS = {\n document: [\"click\", \"touchstart\", \"touchend\"],\n list_item: {\n activate: {\n accordion: [\"touchstart\", \"touchend\"],\n hover: [\"mouseenter\"],\n touch: [\"touchstart\", \"touchend\"]\n },\n deactivate: [\"focusout\", \"mouseleave\"]\n }\n};\n/**\n * Set up an object to track touches\n */\n\nvar start_coords = {\n clientX: 0,\n clientY: 0\n};\nvar end_coords = {\n clientX: 0,\n clientY: 0\n};\n/**\n * Listen for interactions on each menu\n */\n\nMENU_LISTS.forEach(function (MENU_LIST) {\n var LIST_ITEM = MENU_LIST.closest(\".menu-list__item\");\n var MENU_TOGGLE = LIST_ITEM.querySelector(\".menu-list__toggle\");\n /**\n * Mark the LIST_ITEM as active when moused into or touched\n */\n\n for (var MODE in EVENTS.list_item.activate) {\n if (MENU_LIST.dataset[MODE] === \"true\") {\n for (var EVENT in EVENTS.list_item.activate[MODE]) {\n LIST_ITEM.addEventListener(EVENTS.list_item.activate[MODE][EVENT], function (e) {\n /**\n * Store the touchstart position\n */\n if (e.type === \"touchstart\") {\n start_coords = e.touches[0];\n }\n /**\n * Store the touchend position\n */\n\n\n if (e.type === \"touchend\") {\n end_coords = e.changedTouches[0];\n }\n /**\n * Mark the item as active if the event isn't touchstart and\n * the user didn't drag their touch\n */\n\n\n if (e.type !== \"touchstart\" && !DID_USER_DRAG(start_coords, end_coords)) {\n MARK_ACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE, e);\n }\n });\n }\n }\n }\n /**\n * Mark the LIST_ITEM as inactive when moused away\n */\n\n\n EVENTS.list_item.deactivate.forEach(function (EVENT) {\n LIST_ITEM.addEventListener(EVENT, function (e) {\n /**\n * Don't close the menu on focusout if the next focused\n * element is within the current list item!\n */\n if (EVENT === \"focusout\" && LIST_ITEM.contains(e.relatedTarget)) {\n return;\n }\n\n MARK_INACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE);\n }, {\n passive: true\n });\n });\n /**\n * Mark the LIST_ITEM as active or inactive when MENU_TOGGLE is clicked\n */\n\n MENU_TOGGLE.addEventListener(\"click\", function () {\n if (!LIST_ITEM.classList.contains(\"is-active\")) {\n MARK_ACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE);\n } else {\n MARK_INACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE);\n }\n });\n /**\n * Mark the LIST_ITEM as inactive when clicked away or touched away\n */\n\n EVENTS.document.forEach(function (EVENT) {\n document.addEventListener(EVENT, function (e) {\n if (LIST_ITEM.classList.contains(\"is-active\")) {\n /**\n * Get the event path\n */\n var PATH = e.path || e.composedPath && e.composedPath();\n /**\n * Determine if the LIST_ITEM is in the path of touched elements\n */\n\n var LIST_ITEM_TOUCHED = PATH.some(function (ELEMENT) {\n return LIST_ITEM === ELEMENT;\n });\n /**\n * Store the touchstart position\n */\n\n if (e.type === \"touchstart\") {\n start_coords = e.touches[0];\n }\n /**\n * Store the touchend position\n */\n\n\n if (e.type === \"touchend\") {\n end_coords = e.changedTouches[0];\n }\n /**\n * Mark the LIST_ITEM as inactive if it's not in the path of\n * touched elements, and the user didn't drag their touch\n */\n\n\n if (!LIST_ITEM_TOUCHED && !DID_USER_DRAG(start_coords, end_coords)) {\n MARK_INACTIVE(LIST_ITEM, MENU_LIST, MENU_TOGGLE);\n }\n }\n }, {\n passive: true\n });\n });\n});\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/menu-list.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/photoswipe.init.js":
/*!******************************************************!*\
!*** ./src/assets/scripts/modern/photoswipe.init.js ***!
\******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var photoswipe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! photoswipe */ \"./node_modules/photoswipe/dist/photoswipe.js\");\n/* harmony import */ var photoswipe__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(photoswipe__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var photoswipe_dist_photoswipe_ui_default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! photoswipe/dist/photoswipe-ui-default.js */ \"./node_modules/photoswipe/dist/photoswipe-ui-default.js\");\n/* harmony import */ var photoswipe_dist_photoswipe_ui_default_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(photoswipe_dist_photoswipe_ui_default_js__WEBPACK_IMPORTED_MODULE_1__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n\n\n\nvar OPEN_PHOTOSWIPE = function OPEN_PHOTOSWIPE(items) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var msrc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var GALLERY = new photoswipe__WEBPACK_IMPORTED_MODULE_0___default.a(document.querySelector(\".pswp\"), photoswipe_dist_photoswipe_ui_default_js__WEBPACK_IMPORTED_MODULE_1___default.a, items, {\n index: index,\n msrc: msrc,\n showHideOpacity: true\n });\n GALLERY.init();\n};\n\nvar PSWP_LINKS = document.querySelectorAll(\"a.photoswipe\");\n\nif (PSWP_LINKS.length > 0) {\n (function () {\n var PSWP_ITEMS = [];\n\n var _loop = function _loop(i) {\n var SRC = PSWP_LINKS[i].href;\n var SIZE = PSWP_LINKS[i].dataset.size.split(\"x\");\n PSWP_ITEMS.push({\n src: SRC,\n w: SIZE[0],\n h: SIZE[1]\n });\n PSWP_LINKS[i].addEventListener(\"click\", function (e) {\n e.preventDefault();\n var CHILD_IMAGE = PSWP_LINKS[i].querySelector(\"img\");\n var CHILD_IMAGE_SRC = CHILD_IMAGE ? CHILD_IMAGE.currentSrc : false;\n OPEN_PHOTOSWIPE(PSWP_ITEMS, i, CHILD_IMAGE_SRC);\n });\n };\n\n for (var i = 0; i < PSWP_LINKS.length; i++) {\n _loop(i);\n }\n })();\n}\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/photoswipe.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/pwa-install-prompt.init.js":
/*!**************************************************************!*\
!*** ./src/assets/scripts/modern/pwa-install-prompt.init.js ***!
\**************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var pwa_install_prompt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pwa-install-prompt */ \"./node_modules/pwa-install-prompt/script.js\");\n/* harmony import */ var pwa_install_prompt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pwa_install_prompt__WEBPACK_IMPORTED_MODULE_0__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n\nnew pwa_install_prompt__WEBPACK_IMPORTED_MODULE_0___default.a();\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/pwa-install-prompt.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/scroll-hint.init.js":
/*!*******************************************************!*\
!*** ./src/assets/scripts/modern/scroll-hint.init.js ***!
\*******************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var scroll_hint__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! scroll-hint */ \"./node_modules/scroll-hint/lib/index.js\");\n/* harmony import */ var scroll_hint__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(scroll_hint__WEBPACK_IMPORTED_MODULE_0__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n // init ScrollHint\n\nnew scroll_hint__WEBPACK_IMPORTED_MODULE_0___default.a(\".text__table__container\");\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/scroll-hint.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/search.init.js":
/*!**************************************************!*\
!*** ./src/assets/scripts/modern/search.init.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\nvar SEARCH_TOGGLE = document.querySelector(\"[data-toggle=mobile-search]\");\nvar SEARCH_FORM = document.querySelector(\"#mobile-search\");\nvar SEARCH_INPUT = SEARCH_FORM ? SEARCH_FORM.querySelector(\"input[type=search]\") : false;\n\nif (SEARCH_TOGGLE && SEARCH_FORM && SEARCH_INPUT) {\n SEARCH_TOGGLE.addEventListener(\"click\", function (e) {\n e.preventDefault();\n SEARCH_FORM.classList.add(\"is-active\");\n SEARCH_INPUT.focus();\n });\n SEARCH_INPUT.addEventListener(\"blur\", function () {\n if (!SEARCH_INPUT.value) {\n SEARCH_FORM.classList.remove(\"is-active\");\n SEARCH_TOGGLE.focus();\n }\n }, {\n passive: true\n });\n}\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/search.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/slideout.init.js":
/*!****************************************************!*\
!*** ./src/assets/scripts/modern/slideout.init.js ***!
\****************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slideout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slideout */ \"./node_modules/slideout/index.js\");\n/* harmony import */ var slideout__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(slideout__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debounce */ \"./node_modules/debounce/index.js\");\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var focus_trap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! focus-trap */ \"./node_modules/focus-trap/index.js\");\n/* harmony import */ var focus_trap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(focus_trap__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! body-scroll-lock */ \"./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js\");\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(body_scroll_lock__WEBPACK_IMPORTED_MODULE_3__);\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n\n\n\n // get the elements\n\nvar PANEL = document.getElementById(\"page-container\");\nvar MENU = document.getElementById(\"mobile-menu\");\nvar TOGGLE = document.querySelector(\"[data-toggle=mobile-menu]\");\n/**\n * Verify that elements exist\n */\n\nif (PANEL !== null && MENU !== null && TOGGLE !== null) {\n /**\n * Set up a variable to hold the SlideOut instance\n */\n var mobile_menu = null;\n /**\n * Set up a focus trap\n */\n\n var FOCUS_TRAP = focus_trap__WEBPACK_IMPORTED_MODULE_2___default()(\"#\".concat(MENU.id), {\n clickOutsideDeactivates: true\n });\n /**\n * Function to create a new slideout instance\n */\n\n var GET_SLIDEOUT = function GET_SLIDEOUT() {\n return new slideout__WEBPACK_IMPORTED_MODULE_0___default.a({\n duration: 250,\n itemToMove: \"menu\",\n menu: MENU,\n panel: PANEL,\n padding: 280\n });\n };\n /**\n * Function to construct a slideout instance and apply event hooks\n */\n\n\n var CONSTRUCT_SLIDEOUT = function CONSTRUCT_SLIDEOUT() {\n // get the slideout\n mobile_menu = GET_SLIDEOUT();\n mobile_menu.on(\"open\", function () {\n /**\n * Focus the menu\n */\n MENU.focus();\n /**\n * Trap the focus\n */\n\n FOCUS_TRAP.activate();\n /**\n * Disable scrolling on the body\n */\n\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_3__[\"disableBodyScroll\"])(MENU);\n /**\n * Disable touch interactions on the menu\n */\n\n mobile_menu.disableTouch();\n });\n mobile_menu.on(\"close\", function () {\n /**\n * Release the focus\n */\n FOCUS_TRAP.deactivate();\n /**\n * Enable scrolling on the body\n */\n\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_3__[\"enableBodyScroll\"])(MENU);\n /**\n * Enable touch interactions on the menu\n */\n\n mobile_menu.enableTouch();\n });\n };\n /**\n * Completely destroy a slideout instance\n */\n\n\n var DESTROY_SLIDEOUT = function DESTROY_SLIDEOUT() {\n /**\n * Release the focus\n */\n FOCUS_TRAP.deactivate();\n /**\n * Enable scrolling on the body\n */\n\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_3__[\"enableBodyScroll\"])(MENU);\n /**\n * Destroy the slideout\n */\n\n mobile_menu.destroy();\n /**\n * Result the mobile menu to ensure constructing on resize works properly\n */\n\n mobile_menu = null;\n };\n /**\n * Create or destroy the SlideOut instance depending on the menu's display\n */\n\n\n var UPDATE_MENU_STATE = function UPDATE_MENU_STATE() {\n var MENU_DISPLAY = getComputedStyle(MENU).display;\n /**\n * Destroy the SlideOut when it's display: none;\n */\n\n if (mobile_menu !== null && MENU_DISPLAY === \"none\") {\n DESTROY_SLIDEOUT();\n /**\n * Construct the SlideOut when it's nont display: none;\n */\n } else if (mobile_menu === null && MENU_DISPLAY !== \"none\") {\n CONSTRUCT_SLIDEOUT();\n }\n };\n /**\n * Toggle the slideout when clicking the menu icon\n */\n\n\n TOGGLE.addEventListener(\"click\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (mobile_menu !== null) {\n mobile_menu.toggle();\n }\n });\n /**\n * Close the menu when it's open and the content is clicked\n */\n\n PANEL.addEventListener(\"click\", function (e) {\n if (mobile_menu !== null && e.target !== TOGGLE && mobile_menu.isOpen()) {\n e.preventDefault();\n mobile_menu.close();\n }\n });\n /**\n * Create or destroy the SlideOut on window load\n */\n\n window.onload = UPDATE_MENU_STATE();\n /**\n * Create or destroy the SlideOut on window resize\n */\n\n window.onresize = debounce__WEBPACK_IMPORTED_MODULE_1___default()(UPDATE_MENU_STATE, 200);\n}\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/slideout.init.js?");
/***/ }),
/***/ "./src/assets/scripts/modern/swiper.init.js":
/*!**************************************************!*\
!*** ./src/assets/scripts/modern/swiper.init.js ***!
\**************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ \"./node_modules/swiper/dist/js/swiper.esm.bundle.js\");\n// JavaScript Document\n// Scripts written by __gulp_init_author_name__ @ __gulp_init_author_company__\n // init swiper\n\nif (document.querySelectorAll(\".swiper-container--hero .swiper-slide\").length > 1) {\n new swiper__WEBPACK_IMPORTED_MODULE_0__[\"default\"](\".swiper-container--hero\", {\n autoplay: {\n delay: 5000\n },\n loop: true,\n navigation: {\n nextEl: \".swiper-container--hero .swiper-button--next\",\n prevEl: \".swiper-container--hero .swiper-button--prev\"\n },\n pagination: {\n el: \".swiper-pagination\",\n clickable: true\n },\n speed: 150\n });\n}\n\n//# sourceURL=webpack:///./src/assets/scripts/modern/swiper.init.js?");
/***/ }),
/***/ 0:
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** multi ./src/assets/scripts/modern/connectivity.js ./src/assets/scripts/modern/focus-visible.init.js ./src/assets/scripts/modern/javascript.init.js ./src/assets/scripts/modern/layzr.init.js ./src/assets/scripts/modern/menu-list.js ./src/assets/scripts/modern/photoswipe.init.js ./src/assets/scripts/modern/pwa-install-prompt.init.js ./src/assets/scripts/modern/scroll-hint.init.js ./src/assets/scripts/modern/search.init.js ./src/assets/scripts/modern/slideout.init.js ./src/assets/scripts/modern/swiper.init.js ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("__webpack_require__(/*! ./src/assets/scripts/modern/connectivity.js */\"./src/assets/scripts/modern/connectivity.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/focus-visible.init.js */\"./src/assets/scripts/modern/focus-visible.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/javascript.init.js */\"./src/assets/scripts/modern/javascript.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/layzr.init.js */\"./src/assets/scripts/modern/layzr.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/menu-list.js */\"./src/assets/scripts/modern/menu-list.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/photoswipe.init.js */\"./src/assets/scripts/modern/photoswipe.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/pwa-install-prompt.init.js */\"./src/assets/scripts/modern/pwa-install-prompt.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/scroll-hint.init.js */\"./src/assets/scripts/modern/scroll-hint.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/search.init.js */\"./src/assets/scripts/modern/search.init.js\");\n__webpack_require__(/*! ./src/assets/scripts/modern/slideout.init.js */\"./src/assets/scripts/modern/slideout.init.js\");\nmodule.exports = __webpack_require__(/*! ./src/assets/scripts/modern/swiper.init.js */\"./src/assets/scripts/modern/swiper.init.js\");\n\n\n//# sourceURL=webpack:///multi_./src/assets/scripts/modern/connectivity.js_./src/assets/scripts/modern/focus-visible.init.js_./src/assets/scripts/modern/javascript.init.js_./src/assets/scripts/modern/layzr.init.js_./src/assets/scripts/modern/menu-list.js_./src/assets/scripts/modern/photoswipe.init.js_./src/assets/scripts/modern/pwa-install-prompt.init.js_./src/assets/scripts/modern/scroll-hint.init.js_./src/assets/scripts/modern/search.init.js_./src/assets/scripts/modern/slideout.init.js_./src/assets/scripts/modern/swiper.init.js?");
/***/ })
/******/ });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment