{"version":3,"sources":["jsdelivr-header.js","/npm/@mobimedia/carousel@0.1.5/node_modules/style-inject/dist/style-inject.es.js","/npm/@mobimedia/carousel@0.1.5/node_modules/tslib/tslib.es6.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/css-tag.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/reactive-element.js","/npm/@mobimedia/carousel@0.1.5/node_modules/lit-html/lit-html.js","/npm/@mobimedia/carousel@0.1.5/node_modules/lit-element/lit-element.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/decorators/custom-element.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/decorators/property.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/decorators/state.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/decorators/base.js","/npm/@mobimedia/carousel@0.1.5/node_modules/@lit/reactive-element/decorators/query.js","/npm/@mobimedia/carousel@0.1.5/src/helpers/data.ts","/npm/@mobimedia/carousel@0.1.5/node_modules/swiper/shared/ssr-window.esm.mjs","/npm/@mobimedia/carousel@0.1.5/node_modules/swiper/shared/utils.mjs","/npm/@mobimedia/carousel@0.1.5/node_modules/swiper/shared/swiper-core.mjs","/npm/@mobimedia/carousel@0.1.5/node_modules/swiper/shared/create-element-if-not-defined.mjs","/npm/@mobimedia/carousel@0.1.5/node_modules/swiper/modules/navigation.mjs","/npm/@mobimedia/carousel@0.1.5/src/components/carousel/carousel-styles.ts","/npm/@mobimedia/carousel@0.1.5/src/components/shared_styles/swiper-styles.ts","/npm/@mobimedia/carousel@0.1.5/src/helpers/events.ts","/npm/@mobimedia/carousel@0.1.5/src/components/carousel/carousel.ts","/npm/@mobimedia/carousel@0.1.5/src/components/modal/modal-styles.ts","/npm/@mobimedia/carousel@0.1.5/assets/images/close.svg","/npm/@mobimedia/carousel@0.1.5/src/components/modal/modal.ts","/npm/@mobimedia/carousel@0.1.5/assets/images/mute.svg","/npm/@mobimedia/carousel@0.1.5/assets/images/unmute.svg","/npm/@mobimedia/carousel@0.1.5/src/helpers/utils.ts","/npm/@mobimedia/carousel@0.1.5/src/components/modal_slide/modal_slide_helpers.ts","/npm/@mobimedia/carousel@0.1.5/src/components/modal_slide/modal_slide-style.ts","/npm/@mobimedia/carousel@0.1.5/src/components/card/card-styles.ts","/npm/@mobimedia/carousel@0.1.5/assets/images/redirect.svg","/npm/@mobimedia/carousel@0.1.5/src/components/card/card.ts","/npm/@mobimedia/carousel@0.1.5/assets/images/send.svg","/npm/@mobimedia/carousel@0.1.5/assets/images/heart-outlined.svg","/npm/@mobimedia/carousel@0.1.5/assets/images/heart-filled.svg","/npm/@mobimedia/carousel@0.1.5/src/components/modal_slide/modal_slide.ts","/npm/@mobimedia/carousel@0.1.5/src/mobi-carousel.ts","/npm/@mobimedia/carousel@0.1.5/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@mobimedia/carousel@0.1.5/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@mobimedia/carousel@0.1.5/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst n=globalThis,c=n.trustedTypes,h=c?c.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,f=\"$lit$\",v=`lit$${Math.random().toFixed(9).slice(2)}$`,m=\"?\"+v,_=`<${m}>`,w=document,lt=()=>w.createComment(\"\"),st=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,g=Array.isArray,$=t=>g(t)||\"function\"==typeof t?.[Symbol.iterator],x=\"[ \\t\\n\\f\\r]\",T=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,E=/-->/g,k=/>/g,O=RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),S=/'/g,j=/\"/g,M=/^(?:script|style|textarea|title)$/i,P=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),ke=P(1),Oe=P(2),Se=P(3),R=Symbol.for(\"lit-noChange\"),D=Symbol.for(\"lit-nothing\"),V=new WeakMap,I=w.createTreeWalker(w,129);function N(t,i){if(!g(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==h?h.createHTML(i):i}const U=(t,i)=>{const s=t.length-1,e=[];let h,o=2===i?\"<svg>\":3===i?\"<math>\":\"\",n=T;for(let i=0;i<s;i++){const s=t[i];let r,l,c=-1,a=0;for(;a<s.length&&(n.lastIndex=a,l=n.exec(s),null!==l);)a=n.lastIndex,n===T?\"!--\"===l[1]?n=E:void 0!==l[1]?n=k:void 0!==l[2]?(M.test(l[2])&&(h=RegExp(\"</\"+l[2],\"g\")),n=O):void 0!==l[3]&&(n=O):n===O?\">\"===l[0]?(n=h??T,c=-1):void 0===l[1]?c=-2:(c=n.lastIndex-l[2].length,r=l[1],n=void 0===l[3]?O:'\"'===l[3]?j:S):n===j||n===S?n=O:n===E||n===k?n=T:(n=O,h=void 0);const u=n===O&&t[i+1].startsWith(\"/>\")?\" \":\"\";o+=n===T?s+_:c>=0?(e.push(r),s.slice(0,c)+f+s.slice(c)+v+u):s+v+(-2===c?i:u)}return[N(t,o+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class B{constructor({strings:t,_$litType$:i},s){let e;this.parts=[];let h=0,o=0;const n=t.length-1,r=this.parts,[l,a]=U(t,i);if(this.el=B.createElement(l,s),I.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(e=I.nextNode())&&r.length<n;){if(1===e.nodeType){if(e.hasAttributes())for(const t of e.getAttributeNames())if(t.endsWith(f)){const i=a[o++],s=e.getAttribute(t).split(v),n=/([.?@])?(.*)/.exec(i);r.push({type:1,index:h,name:n[2],strings:s,ctor:\".\"===n[1]?Y:\"?\"===n[1]?Z:\"@\"===n[1]?q:G}),e.removeAttribute(t)}else t.startsWith(v)&&(r.push({type:6,index:h}),e.removeAttribute(t));if(M.test(e.tagName)){const t=e.textContent.split(v),i=t.length-1;if(i>0){e.textContent=c?c.emptyScript:\"\";for(let s=0;s<i;s++)e.append(t[s],lt()),I.nextNode(),r.push({type:2,index:++h});e.append(t[i],lt())}}}else if(8===e.nodeType)if(e.data===m)r.push({type:2,index:h});else{let t=-1;for(;-1!==(t=e.data.indexOf(v,t+1));)r.push({type:7,index:h}),t+=v.length-1}h++}}static createElement(t,i){const s=w.createElement(\"template\");return s.innerHTML=t,s}}function z(t,i,s=t,e){if(i===R)return i;let h=void 0!==e?s.o?.[e]:s.l;const o=st(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s.o??=[])[e]=h:s.l=h),void 0!==h&&(i=z(t,h._$AS(t,i.values),h,e)),i}class F{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??w).importNode(i,!0);I.currentNode=e;let h=I.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new et(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new K(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=I.nextNode(),o++)}return I.currentNode=w,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class et{get _$AU(){return this._$AM?._$AU??this.v}constructor(t,i,s,e){this.type=2,this._$AH=D,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this.v=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=z(this,t,i),st(t)?t===D||null==t||\"\"===t?(this._$AH!==D&&this._$AR(),this._$AH=D):t!==this._$AH&&t!==R&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):$(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==D&&st(this._$AH)?this._$AA.nextSibling.data=t:this.T(w.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=B.createElement(N(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new F(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=V.get(t.strings);return void 0===i&&V.set(t.strings,i=new B(t)),i}k(t){g(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new et(this.O(lt()),this.O(lt()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this.v=t,this._$AP?.(t))}}class G{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=D,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=D}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=z(this,t,i,0),o=!st(t)||t!==this._$AH&&t!==R,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=z(this,e[s+n],i,n),r===R&&(r=this._$AH[n]),o||=!st(r)||r!==this._$AH[n],r===D?t=D:t!==D&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===D?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class Y extends G{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===D?void 0:t}}class Z extends G{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==D)}}class q extends G{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=z(this,t,i,0)??D)===R)return;const s=this._$AH,e=t===D&&s!==D||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==D&&(s===D||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class K{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){z(this,t)}}const si={M:f,P:v,A:m,C:1,L:U,R:F,D:$,V:z,I:et,H:G,N:Z,U:q,B:Y,F:K},Re=n.litHtmlPolyfillSupport;Re?.(B,et),(n.litHtmlVersions??=[]).push(\"3.2.0\");const Q=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new et(i.insertBefore(lt(),t),t,void 0,s??{})}return h._$AI(t),h};export{si as _$LH,ke as html,Se as mathml,R as noChange,D as nothing,Q as render,Oe as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as e}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as n,noChange as l}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class h extends e{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=n(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return l}}h._$litElement$=!0,h[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:h});const f=globalThis.litElementPolyfillSupport;f?.({LitElement:h});const x={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.0\");export{h as LitElement,x as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import {SlideResponse} from '../types';\n\nexport const getSlides = async (playlistId: String): Promise<SlideResponse> => {\n  if (!playlistId) {\n    throw new Error(\n      \"The 'playlistId' parameter is required and cannot be empty.\"\n    );\n  }\n\n  const response = await fetch(\n    `https://app.dietpixels.com/api/v1/public/playlists/${playlistId}/`\n  );\n\n  if (!response.ok) {\n    throw new Error(`The playlist ID '${playlistId}' is invalid or not found.`);\n  }\n\n  const res = await response.json();\n  return res;\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  const children = [...element.children];\n  if (element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n  const isChild = parent.contains(el);\n  if (!isChild && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    return children.includes(el);\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slides);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\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      if (slides[i]) {\n        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n    if (allSlidesSize + offsetSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n      nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n      prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\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\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // initial virtual\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  const isInitialVirtual = isVirtual && initial;\n  // Update Index\n  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides\n      } = swiper.params;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (centeredSlides) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\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,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides\n  } = params;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (centeredSlides && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n    document.activeElement.blur();\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  new Date().getTime();\n  if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import {css} from 'lit';\n\nexport const styleSheet = css`\n  @media screen and (max-width: 640px) {\n    .swiper-mobimedia-container {\n      /* height: var(--mobimedia-slide-height-mobile); */\n      height: auto;\n    }\n    .swiper-button-next,\n    .swiper-button-prev {\n      display: none;\n    }\n\n    .main-swiper-slide {\n      transform: translateZ(0) scale(90%) !important;\n    }\n    .main-swiper-slide.swiper-slide-active {\n      transform: translateZ(0) scale(100%) !important;\n    }\n    .main-swiper-slide video {\n      width: calc(var(--image-aspect-ratio) * 200px);\n    }\n  }\n\n  @media screen and (min-width: 640px) {\n    .swiper-mobimedia-container {\n      /* height: var(--mobimedia-slide-height); */\n      height: auto;\n      padding: 0 30px;\n    }\n\n    .main-swiper-slide video {\n      width: calc(var(--image-aspect-ratio) * var(--mobimedia-slide-height));\n    }\n  }\n\n  .main-swiper-slide {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    /* width: fit-content !important; */\n    height: max-content;\n  }\n  .main-swiper-slide video {\n    flex-shrink: 0;\n    aspect-ratio: 1080/1920;\n    object-fit: cover;\n    width: 100% !important;\n  }\n  .main-swiper-slide.swiper-slide-active {\n    transform: translateZ(0) scale(100%) !important;\n  }\n`;\n","import {css} from 'lit';\n\nexport const styleSheet = css`\n  /* FONT_START */\n  /* FONT_END */\n  :root {\n    --swiper-theme-color: #007aff;\n    /*\n  --swiper-preloader-color: var(--swiper-theme-color);\n  --swiper-wrapper-transition-timing-function: initial;\n  */\n  }\n  :host {\n    position: relative;\n    display: block;\n    margin-left: auto;\n    margin-right: auto;\n    z-index: 1;\n  }\n  .swiper {\n    overflow: hidden;\n    list-style: none;\n    padding: 0;\n    z-index: 1;\n  }\n  .swiper-vertical > .swiper-wrapper {\n    flex-direction: column;\n  }\n  .swiper-wrapper {\n    position: relative;\n    width: 100%;\n    height: 100%;\n    z-index: 1;\n    display: flex;\n    transition-property: transform;\n    transition-timing-function: var(\n      --swiper-wrapper-transition-timing-function,\n      initial\n    );\n    box-sizing: content-box;\n  }\n  .swiper-android .swiper-slide,\n  .swiper-ios .swiper-slide,\n  .swiper-wrapper {\n    transform: translate3d(0px, 0, 0);\n  }\n  .swiper-horizontal {\n    touch-action: pan-y;\n  }\n  .swiper-vertical {\n    touch-action: pan-x;\n  }\n  .swiper-slide {\n    flex-shrink: 0;\n    cursor: pointer;\n  }\n  .swiper-slide-invisible-blank {\n    visibility: hidden;\n  }\n  /* Auto Height */\n  .swiper-autoheight,\n  .swiper-autoheight .swiper-slide {\n    height: auto;\n  }\n  .swiper-autoheight .swiper-wrapper {\n    align-items: flex-start;\n    transition-property: transform, height;\n  }\n  .swiper-backface-hidden .swiper-slide {\n    transform: translateZ(0);\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n  }\n  /* 3D Effects */\n  .swiper-3d.swiper-css-mode .swiper-wrapper {\n    perspective: 1200px;\n  }\n  .swiper-3d .swiper-wrapper {\n    transform-style: preserve-3d;\n  }\n  .swiper-3d {\n    perspective: 1200px;\n  }\n  .swiper-3d .swiper-slide,\n  .swiper-3d .swiper-cube-shadow {\n    transform-style: preserve-3d;\n  }\n  /* CSS Mode */\n  .swiper-css-mode > .swiper-wrapper {\n    overflow: auto;\n    scrollbar-width: none;\n    /* For Firefox */\n    -ms-overflow-style: none;\n    /* For Internet Explorer and Edge */\n  }\n  .swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n    display: none;\n  }\n  .swiper-css-mode > .swiper-wrapper > .swiper-slide {\n    scroll-snap-align: start start;\n  }\n  .swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n    scroll-snap-type: x mandatory;\n  }\n  .swiper-css-mode.swiper-vertical > .swiper-wrapper {\n    scroll-snap-type: y mandatory;\n  }\n  .swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n    scroll-snap-type: none;\n  }\n  .swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n    scroll-snap-align: none;\n  }\n  .swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n    content: '';\n    flex-shrink: 0;\n    order: 9999;\n  }\n  .swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n    scroll-snap-align: center center;\n    scroll-snap-stop: always;\n  }\n  .swiper-css-mode.swiper-centered.swiper-horizontal\n    > .swiper-wrapper\n    > .swiper-slide:first-child {\n    margin-inline-start: var(--swiper-centered-offset-before);\n  }\n  .swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n    height: 100%;\n    min-height: 1px;\n    width: var(--swiper-centered-offset-after);\n  }\n  .swiper-css-mode.swiper-centered.swiper-vertical\n    > .swiper-wrapper\n    > .swiper-slide:first-child {\n    margin-block-start: var(--swiper-centered-offset-before);\n  }\n  .swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n    width: 100%;\n    min-width: 1px;\n    height: var(--swiper-centered-offset-after);\n  }\n  /* Slide styles start */\n  /* 3D Shadows */\n  .swiper-3d .swiper-slide-shadow,\n  .swiper-3d .swiper-slide-shadow-left,\n  .swiper-3d .swiper-slide-shadow-right,\n  .swiper-3d .swiper-slide-shadow-top,\n  .swiper-3d .swiper-slide-shadow-bottom,\n  .swiper-3d .swiper-slide-shadow,\n  .swiper-3d .swiper-slide-shadow-left,\n  .swiper-3d .swiper-slide-shadow-right,\n  .swiper-3d .swiper-slide-shadow-top,\n  .swiper-3d .swiper-slide-shadow-bottom {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n    z-index: 10;\n  }\n  .swiper-3d .swiper-slide-shadow {\n    background: rgba(0, 0, 0, 0.15);\n  }\n  .swiper-3d .swiper-slide-shadow-left {\n    background-image: linear-gradient(\n      to left,\n      rgba(0, 0, 0, 0.5),\n      rgba(0, 0, 0, 0)\n    );\n  }\n  .swiper-3d .swiper-slide-shadow-right {\n    background-image: linear-gradient(\n      to right,\n      rgba(0, 0, 0, 0.5),\n      rgba(0, 0, 0, 0)\n    );\n  }\n  .swiper-3d .swiper-slide-shadow-top {\n    background-image: linear-gradient(\n      to top,\n      rgba(0, 0, 0, 0.5),\n      rgba(0, 0, 0, 0)\n    );\n  }\n  .swiper-3d .swiper-slide-shadow-bottom {\n    background-image: linear-gradient(\n      to bottom,\n      rgba(0, 0, 0, 0.5),\n      rgba(0, 0, 0, 0)\n    );\n  }\n  .swiper-lazy-preloader {\n    width: 42px;\n    height: 42px;\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    margin-left: -21px;\n    margin-top: -21px;\n    z-index: 10;\n    transform-origin: 50%;\n    box-sizing: border-box;\n    border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n    border-radius: 50%;\n    border-top-color: transparent;\n  }\n  .swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n  .swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n    animation: swiper-preloader-spin 1s infinite linear;\n  }\n  .swiper-lazy-preloader-white {\n    --swiper-preloader-color: #fff;\n  }\n  .swiper-lazy-preloader-black {\n    --swiper-preloader-color: #000;\n  }\n  @keyframes swiper-preloader-spin {\n    0% {\n      transform: rotate(0deg);\n    }\n    100% {\n      transform: rotate(360deg);\n    }\n  }\n  /* Slide styles end */\n  .swiper-virtual .swiper-slide {\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    transform: translateZ(0);\n  }\n  .swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 0;\n    pointer-events: none;\n  }\n  .swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n    height: 1px;\n    width: var(--swiper-virtual-size);\n  }\n  .swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n    width: 1px;\n    height: var(--swiper-virtual-size);\n  }\n  :root {\n    --swiper-navigation-size: 44px;\n    /*\n  --swiper-navigation-top-offset: 50%;\n  --swiper-navigation-sides-offset: 10px;\n  --swiper-navigation-color: var(--swiper-theme-color);\n  */\n  }\n  .swiper-button-prev,\n  .swiper-button-next {\n    position: absolute;\n    top: var(--swiper-navigation-top-offset, 50%);\n    width: calc(var(--swiper-navigation-size) / 44 * 27);\n    height: var(--swiper-navigation-size);\n    margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n    z-index: 10;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--swiper-navigation-color, var(--swiper-theme-color));\n  }\n  .swiper-button-prev.swiper-button-disabled,\n  .swiper-button-next.swiper-button-disabled {\n    opacity: 0.35;\n    cursor: auto;\n    pointer-events: none;\n  }\n  .swiper-button-prev.swiper-button-hidden,\n  .swiper-button-next.swiper-button-hidden {\n    opacity: 0;\n    cursor: auto;\n    pointer-events: none;\n  }\n  .swiper-navigation-disabled .swiper-button-prev,\n  .swiper-navigation-disabled .swiper-button-next {\n    display: none !important;\n  }\n  .swiper-button-prev svg,\n  .swiper-button-next svg {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    transform-origin: center;\n  }\n  .swiper-rtl .swiper-button-prev svg,\n  .swiper-rtl .swiper-button-next svg {\n    transform: rotate(180deg);\n  }\n  .swiper-button-prev,\n  .swiper-rtl .swiper-button-next {\n    left: var(--swiper-navigation-sides-offset, 10px);\n    right: auto;\n  }\n  .swiper-button-next,\n  .swiper-rtl .swiper-button-prev {\n    right: var(--swiper-navigation-sides-offset, 10px);\n    left: auto;\n  }\n  .swiper-button-lock {\n    display: none;\n  }\n  /* Navigation font start */\n  .swiper-button-prev:after,\n  .swiper-button-next:after {\n    font-family: swiper-icons;\n    font-size: var(--swiper-navigation-size);\n    text-transform: none !important;\n    letter-spacing: 0;\n    font-variant: initial;\n    line-height: 1;\n  }\n  .swiper-button-prev:after,\n  .swiper-rtl .swiper-button-next:after {\n    content: 'prev';\n  }\n  .swiper-button-next,\n  .swiper-rtl .swiper-button-prev {\n    right: var(--swiper-navigation-sides-offset, 10px);\n    left: auto;\n  }\n  .swiper-button-next:after,\n  .swiper-rtl .swiper-button-prev:after {\n    content: 'next';\n  }\n\n  .swiper-pagination {\n    position: absolute;\n    text-align: center;\n    transition: 300ms opacity;\n    transform: translate3d(0, 0, 0);\n    z-index: 10;\n  }\n  .swiper-pagination.swiper-pagination-hidden {\n    opacity: 0;\n  }\n  .swiper-pagination-disabled > .swiper-pagination,\n  .swiper-pagination.swiper-pagination-disabled {\n    display: none !important;\n  }\n  /* Common Styles */\n  .swiper-pagination-fraction,\n  .swiper-pagination-custom,\n  .swiper-horizontal > .swiper-pagination-bullets,\n  .swiper-pagination-bullets.swiper-pagination-horizontal {\n    bottom: var(--swiper-pagination-bottom, 8px);\n    top: var(--swiper-pagination-top, auto);\n    left: 0;\n    width: 100%;\n  }\n  /* Bullets */\n  .swiper-pagination-bullets-dynamic {\n    overflow: hidden;\n    font-size: 0;\n  }\n  .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n    transform: scale(0.33);\n    position: relative;\n  }\n  .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n    transform: scale(1);\n  }\n  .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n    transform: scale(1);\n  }\n  .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n    transform: scale(0.66);\n  }\n  .swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet-active-prev-prev {\n    transform: scale(0.33);\n  }\n  .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n    transform: scale(0.66);\n  }\n  .swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet-active-next-next {\n    transform: scale(0.33);\n  }\n  .swiper-pagination-bullet {\n    width: var(\n      --swiper-pagination-bullet-width,\n      var(--swiper-pagination-bullet-size, 8px)\n    );\n    height: var(\n      --swiper-pagination-bullet-height,\n      var(--swiper-pagination-bullet-size, 8px)\n    );\n    display: inline-block;\n    border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n    background: var(--swiper-pagination-bullet-inactive-color, #000);\n    opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n  }\n  button.swiper-pagination-bullet {\n    border: none;\n    margin: 0;\n    padding: 0;\n    box-shadow: none;\n    -webkit-appearance: none;\n    appearance: none;\n  }\n  .swiper-pagination-clickable .swiper-pagination-bullet {\n    cursor: pointer;\n  }\n  .swiper-pagination-bullet:only-child {\n    display: none !important;\n  }\n  .swiper-pagination-bullet-active {\n    opacity: var(--swiper-pagination-bullet-opacity, 1);\n    background: var(--swiper-pagination-color, var(--swiper-theme-color));\n  }\n  .swiper-vertical > .swiper-pagination-bullets,\n  .swiper-pagination-vertical.swiper-pagination-bullets {\n    right: var(--swiper-pagination-right, 8px);\n    left: var(--swiper-pagination-left, auto);\n    top: 50%;\n    transform: translate3d(0px, -50%, 0);\n  }\n  .swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n  .swiper-pagination-vertical.swiper-pagination-bullets\n    .swiper-pagination-bullet {\n    margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n    display: block;\n  }\n  .swiper-vertical\n    > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n  .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n    top: 50%;\n    transform: translateY(-50%);\n    width: 8px;\n  }\n  .swiper-vertical\n    > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet,\n  .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet {\n    display: inline-block;\n    transition: 200ms transform, 200ms top;\n  }\n  .swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n  .swiper-pagination-horizontal.swiper-pagination-bullets\n    .swiper-pagination-bullet {\n    margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n  }\n  .swiper-horizontal\n    > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n  .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n    left: 50%;\n    transform: translateX(-50%);\n    white-space: nowrap;\n  }\n  .swiper-horizontal\n    > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet,\n  .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet {\n    transition: 200ms transform, 200ms left;\n  }\n  .swiper-horizontal.swiper-rtl\n    > .swiper-pagination-bullets-dynamic\n    .swiper-pagination-bullet {\n    transition: 200ms transform, 200ms right;\n  }\n  /* Fraction */\n  .swiper-pagination-fraction {\n    color: var(--swiper-pagination-fraction-color, inherit);\n  }\n  /* Progress */\n  .swiper-pagination-progressbar {\n    background: var(\n      --swiper-pagination-progressbar-bg-color,\n      rgba(0, 0, 0, 0.25)\n    );\n    position: absolute;\n  }\n  .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n    background: var(--swiper-pagination-color, var(--swiper-theme-color));\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    transform: scale(0);\n    transform-origin: left top;\n  }\n  .swiper-rtl\n    .swiper-pagination-progressbar\n    .swiper-pagination-progressbar-fill {\n    transform-origin: right top;\n  }\n  .swiper-horizontal > .swiper-pagination-progressbar,\n  .swiper-pagination-progressbar.swiper-pagination-horizontal,\n  .swiper-vertical\n    > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n  .swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n    width: 100%;\n    height: var(--swiper-pagination-progressbar-size, 4px);\n    left: 0;\n    top: 0;\n  }\n  .swiper-vertical > .swiper-pagination-progressbar,\n  .swiper-pagination-progressbar.swiper-pagination-vertical,\n  .swiper-horizontal\n    > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n  .swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n    width: var(--swiper-pagination-progressbar-size, 4px);\n    height: 100%;\n    left: 0;\n    top: 0;\n  }\n  .swiper-pagination-lock {\n    display: none;\n  }\n  .swiper-scrollbar {\n    border-radius: var(--swiper-scrollbar-border-radius, 10px);\n    position: relative;\n    touch-action: none;\n    background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n  }\n  .swiper-scrollbar-disabled > .swiper-scrollbar,\n  .swiper-scrollbar.swiper-scrollbar-disabled {\n    display: none !important;\n  }\n  .swiper-horizontal > .swiper-scrollbar,\n  .swiper-scrollbar.swiper-scrollbar-horizontal {\n    position: absolute;\n    left: var(--swiper-scrollbar-sides-offset, 1%);\n    bottom: var(--swiper-scrollbar-bottom, 4px);\n    top: var(--swiper-scrollbar-top, auto);\n    z-index: 50;\n    height: var(--swiper-scrollbar-size, 4px);\n    width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n  }\n  .swiper-vertical > .swiper-scrollbar,\n  .swiper-scrollbar.swiper-scrollbar-vertical {\n    position: absolute;\n    left: var(--swiper-scrollbar-left, auto);\n    right: var(--swiper-scrollbar-right, 4px);\n    top: var(--swiper-scrollbar-sides-offset, 1%);\n    z-index: 50;\n    width: var(--swiper-scrollbar-size, 4px);\n    height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n  }\n  .swiper-scrollbar-drag {\n    height: 100%;\n    width: 100%;\n    position: relative;\n    background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n    border-radius: var(--swiper-scrollbar-border-radius, 10px);\n    left: 0;\n    top: 0;\n  }\n  .swiper-scrollbar-cursor-drag {\n    cursor: move;\n  }\n  .swiper-scrollbar-lock {\n    display: none;\n  }\n  /* Zoom container styles start */\n  .swiper-zoom-container {\n    width: 100%;\n    height: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    text-align: center;\n  }\n  .swiper-zoom-container > img,\n  .swiper-zoom-container > svg,\n  .swiper-zoom-container > canvas {\n    max-width: 100%;\n    max-height: 100%;\n    object-fit: contain;\n  }\n  /* Zoom container styles end */\n  .swiper-slide-zoomed {\n    cursor: move;\n    touch-action: none;\n  }\n  /* a11y */\n  .swiper .swiper-notification {\n    position: absolute;\n    left: 0;\n    top: 0;\n    pointer-events: none;\n    opacity: 0;\n    z-index: -1000;\n  }\n  .swiper-free-mode > .swiper-wrapper {\n    transition-timing-function: ease-out;\n    margin: 0 auto;\n  }\n  .swiper-grid > .swiper-wrapper {\n    flex-wrap: wrap;\n  }\n  .swiper-grid-column > .swiper-wrapper {\n    flex-wrap: wrap;\n    flex-direction: column;\n  }\n  .swiper-fade.swiper-free-mode .swiper-slide {\n    transition-timing-function: ease-out;\n  }\n  .swiper-fade .swiper-slide {\n    pointer-events: none;\n    transition-property: opacity;\n  }\n  .swiper-fade .swiper-slide .swiper-slide {\n    pointer-events: none;\n  }\n  .swiper-fade .swiper-slide-active {\n    pointer-events: auto;\n  }\n  .swiper-fade .swiper-slide-active .swiper-slide-active {\n    pointer-events: auto;\n  }\n  .swiper.swiper-cube {\n    overflow: visible;\n  }\n  .swiper-cube .swiper-slide {\n    pointer-events: none;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    z-index: 1;\n    visibility: hidden;\n    transform-origin: 0 0;\n    width: 100%;\n    height: 100%;\n  }\n  .swiper-cube .swiper-slide .swiper-slide {\n    pointer-events: none;\n  }\n  .swiper-cube.swiper-rtl .swiper-slide {\n    transform-origin: 100% 0;\n  }\n  .swiper-cube .swiper-slide-active,\n  .swiper-cube .swiper-slide-active .swiper-slide-active {\n    pointer-events: auto;\n  }\n  .swiper-cube .swiper-slide-active,\n  .swiper-cube .swiper-slide-next,\n  .swiper-cube .swiper-slide-prev {\n    pointer-events: auto;\n    visibility: visible;\n  }\n  .swiper-cube .swiper-cube-shadow {\n    position: absolute;\n    left: 0;\n    bottom: 0px;\n    width: 100%;\n    height: 100%;\n    opacity: 0.6;\n    z-index: 0;\n  }\n  .swiper-cube .swiper-cube-shadow:before {\n    content: '';\n    background: #000;\n    position: absolute;\n    left: 0;\n    top: 0;\n    bottom: 0;\n    right: 0;\n    filter: blur(50px);\n  }\n  .swiper-cube .swiper-slide-next + .swiper-slide {\n    pointer-events: auto;\n    visibility: visible;\n  }\n  /* Cube slide shadows start */\n  .swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n  .swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n  .swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n  .swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n    z-index: 0;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n  }\n  /* Cube slide shadows end */\n  .swiper.swiper-flip {\n    overflow: visible;\n  }\n  .swiper-flip .swiper-slide {\n    pointer-events: none;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    z-index: 1;\n  }\n  .swiper-flip .swiper-slide .swiper-slide {\n    pointer-events: none;\n  }\n  .swiper-flip .swiper-slide-active,\n  .swiper-flip .swiper-slide-active .swiper-slide-active {\n    pointer-events: auto;\n  }\n  /* Flip slide shadows start */\n  .swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n  .swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n  .swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n  .swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n    z-index: 0;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n  }\n  /* Flip slide shadows end */\n  .swiper-creative .swiper-slide {\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    overflow: hidden;\n    transition-property: transform, opacity, height;\n  }\n  .swiper.swiper-cards {\n    overflow: visible;\n  }\n  .swiper-cards .swiper-slide {\n    transform-origin: center bottom;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    overflow: hidden;\n  }\n\n  .swiper-button-next,\n  .swiper-button-prev {\n    color: white;\n  }\n\n  .swiper.swiper-initialized .swiper-button-next {\n    color: black;\n  }\n\n  .swiper.swiper-initialized .swiper-button-prev {\n    color: black;\n  }\n`;\n","export const SlideClickEvent = (slide_index: number) => {\n  type SlideClickEventDetail = {\n    slide_index: number;\n  };\n  const event = new CustomEvent<SlideClickEventDetail>('onSlideClick', {\n    bubbles: true,\n    composed: true,\n    cancelable: true,\n    detail: {\n      slide_index: slide_index,\n    },\n  });\n  return event;\n};\n\nexport type SlideClickEvent = ReturnType<typeof SlideClickEvent>;\n","import {LitElement, html} from 'lit';\nimport {customElement, property, query} from 'lit/decorators.js';\nimport {SlideResponse, Video} from '../../types';\n\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\n\nimport {styleSheet} from './carousel-styles';\nimport {styleSheet as swiperStyleSheet} from '../shared_styles/swiper-styles';\n\nimport {SlideClickEvent} from '../../helpers/events';\n\n@customElement('carousel-root')\nexport class Carousel extends LitElement {\n  static override styles = [swiperStyleSheet, styleSheet];\n\n  private swiper?: Swiper;\n\n  @query('.swiper-mobimedia-container')\n  _ref_swiper_mobimedia_container!: HTMLElement;\n\n  @query('.swiper-button-next')\n  _ref_swiper_button_next!: HTMLElement;\n\n  @query('.swiper-button-prev')\n  _ref_swiper_button_prev!: HTMLElement;\n\n  @property({type: Object})\n  data!: SlideResponse;\n\n  private observer?: IntersectionObserver;\n\n  constructor() {\n    super();\n    // this.data = {\n    //   uuid: '',\n    //   display_title: '',\n    //   description: '',\n    //   thumbnail: '',\n    //   videos: [],\n    // };\n    this.observer = new IntersectionObserver(this.handleIntersection, {\n      root: this._ref_swiper_mobimedia_container,\n      threshold: 0.1, // Adjust threshold as needed\n    });\n  }\n\n  // Callback for Intersection Observer\n  private handleIntersection(entries: IntersectionObserverEntry[]) {\n    entries.forEach((entry) => {\n      if (entry.isIntersecting) {\n        const video = entry.target as HTMLVideoElement;\n        if (!video.src) {\n          video.src = video.dataset.src || '';\n          video.load();\n        }\n      }\n    });\n  }\n\n  override disconnectedCallback() {\n    this.swiper?.destroy();\n    this.observer?.disconnect();\n  }\n\n  override async firstUpdated() {\n    // this.data = await getSlides();\n    setTimeout(() => {\n      this.initSwiper();\n    }, 0);\n  }\n\n  override updated() {\n    const videos = this.renderRoot.querySelectorAll('.swiper-preview-slide');\n    videos.forEach((video) => {\n      const videoElement = video as HTMLVideoElement;\n      if (!videoElement.src) {\n        this.observer?.observe(video);\n      }\n    });\n  }\n\n  initSwiper() {\n    this.swiper = new Swiper(this._ref_swiper_mobimedia_container, {\n      modules: [Navigation],\n      // Small screens\n      slidesPerView: 1.5,\n      loop: true,\n      centeredSlides: true,\n      breakpoints: {\n        // Big screens\n        768: {\n          spaceBetween: 30,\n          slidesPerView: 5.5,\n          centeredSlides: this.data.videos.length <= 5 ? true : false,\n          rewind: true,\n          loop: false,\n          initialSlide:\n            this.data.videos.length <= 5 ? this.data.videos.length / 2 : 0,\n          enabled: this.data.videos.length <= 5 ? false : true,\n        },\n      },\n      // Navigation arrows\n      navigation: {\n        nextEl: this._ref_swiper_button_next,\n        prevEl: this._ref_swiper_button_prev,\n      },\n    });\n  }\n\n  _slideOnClick(e: Event) {\n    const slide_id = Number(\n      (e.target as HTMLElement).getAttribute('data-index')\n    );\n    this.dispatchEvent(SlideClickEvent(slide_id));\n  }\n\n  render_slide(item: Video, idx: Number) {\n    return html`\n      <div class=\"swiper-slide main-swiper-slide\">\n        <video\n          class=\"swiper-preview-slide\"\n          data-src=\"${item.thumbnail}\"\n          autoplay\n          muted\n          loop\n          data-index=${idx}\n          @click=${this._slideOnClick}\n        ></video>\n      </div>\n    `;\n  }\n\n  override render() {\n    return html`\n      <div class=\"main-carousel-wrapper\">\n        <!-- Main Swiper -->\n        <div class=\"swiper swiper-mobimedia-container\">\n          <div class=\"swiper-wrapper\" id=\"mobimedia-slides\">\n            <!-- Slides will be added dynamically -->\n            ${this.data.videos.map(\n              (item, _idx) => this.render_slide(item, _idx)\n              // html` <carousel-slide .item=${item} .idx=${_idx} class=\"swiper-slide main-swiper-slide\"></carousel-slide> `\n            )}\n          </div>\n          <!-- Swiper controls -->\n          <div class=\"swiper-button-prev\"></div>\n          <div class=\"swiper-button-next\"></div>\n        </div>\n      </div>\n    `;\n  }\n}\n","import {css} from 'lit';\n\nexport const styleSheet = css`\n  .modal {\n    /* Hidden by default */\n    display: none;\n    position: fixed;\n    z-index: 2147483647 !important; /* Ensure it appears above other elements */\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100vh;\n    overflow: hidden; /* Enable scroll if needed */\n    background-color: rgba(0, 0, 0, 0.95); /* Semi-transparent background */\n  }\n\n  .modal-overlay {\n    /* background-color: rgba(0, 0, 0, 0.95); */\n    height: 100%;\n    left: 0;\n    position: absolute;\n    top: 0;\n    width: 100%;\n    /* z-index: 1000; */\n  }\n\n  .modal-content {\n    /* background-color: rgba(0, 0, 0, 0.95); */\n    /* height: 100%; */\n    /* left: 0; */\n    position: absolute;\n    /* top: 0; */\n    width: min(100vw, 1080px);\n    left: 0;\n    right: 0;\n    margin: auto;\n    z-index: 2147483647 !important;\n  }\n\n  .close {\n    position: absolute;\n    top: 18px;\n    right: 6px;\n    color: white;\n    font-size: 60px;\n    font-weight: lighter;\n    cursor: pointer;\n    z-index: 2147483647 !important;\n    width: 50px;\n    height: 50px;\n  }\n`;\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2224px%22%20viewBox%3D%220%20-960%20960%20960%22%20width%3D%2224px%22%20fill%3D%22%23FFFFFF%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cfilter%20id%3D%22dropShadow%22%20x%3D%22-50%25%22%20y%3D%22-50%25%22%20width%3D%22200%25%22%20height%3D%22200%25%22%3E%20%20%20%20%20%20%3CfeDropShadow%20dx%3D%222%22%20dy%3D%222%22%20stdDeviation%3D%223%22%20flood-color%3D%22black%22%20flood-opacity%3D%220.5%22%20%2F%3E%20%20%20%20%3C%2Ffilter%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20d%3D%22m336-280-56-56%20144-144-144-143%2056-56%20144%20144%20143-144%2056%2056-144%20143%20144%20144-56%2056-143-144-144%20144Z%22%20filter%3D%22url%28%23dropShadow%29%22%20%2F%3E%3C%2Fsvg%3E\"","import {LitElement, html} from 'lit';\nimport {customElement, query, property} from 'lit/decorators.js';\n\nimport {styleSheet} from './modal-styles';\nimport closeIcon from '../../../assets/images/close.svg';\n\n@customElement('carousel-modal')\nexport class Modal extends LitElement {\n  static override styles = [\n    // css`\n    //   :host {\n    //     box-sizing: border-box;\n    //     padding: 1rem 0;\n    //   }\n    // `,\n    styleSheet,\n  ];\n\n  @property({type: Boolean}) visible: boolean | undefined;\n\n  @query('.modal') _ref_modal!: HTMLElement;\n\n  constructor() {\n    super();\n  }\n\n  override updated(changedProperties: Map<string | number | symbol, unknown>) {\n    if (changedProperties.has('visible')) {\n      this._ref_modal.style.display = this.visible ? 'block' : 'none';\n    }\n  }\n\n  _closeModal() {\n    this.visible = false;\n    this.dispatchEvent(\n      new Event('modal-closed', {bubbles: true, composed: true})\n    );\n  }\n\n  override render() {\n    return html`\n      <div id=\"myModal\" class=\"modal\">\n        <div class=\"modal-overlay\"></div>\n        <div class=\"modal-content\">\n          <slot></slot>\n          <img class=\"close\" src=${closeIcon} @click=${this._closeModal} />\n        </div>\n      </div>\n    `;\n  }\n}\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2240px%22%20viewBox%3D%220%20-960%20960%20960%22%20width%3D%2240px%22%20fill%3D%22%23FFFFFF%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cfilter%20id%3D%22dropShadow%22%20x%3D%22-20%25%22%20y%3D%22-20%25%22%20width%3D%22150%25%22%20height%3D%22150%25%22%3E%20%20%20%20%20%20%3CfeDropShadow%20dx%3D%226%22%20dy%3D%226%22%20stdDeviation%3D%228%22%20flood-color%3D%22black%22%20flood-opacity%3D%220.8%22%20%2F%3E%20%20%20%20%3C%2Ffilter%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20d%3D%22M806-56%20677.67-184.33q-27%2018.66-58%2032.16-31%2013.5-64.34%2021.17v-68.67q20-6.33%2038.84-13.66%2018.83-7.34%2035.5-19l-154.34-155V-160l-200-200h-160v-240H262L51.33-810.67%2098.67-858l754.66%20754L806-56Zm-26.67-232-48-48q19-33%2028.17-69.62%209.17-36.61%209.17-75.38%200-100.22-58.34-179.11Q652-739%20555.33-762.33V-831q124%2028%20202%20125.5t78%20224.5q0%2051.67-14.16%20100.67-14.17%2049-41.84%2092.33Zm-134-134-90-90v-130q47%2022%2073.5%2066t26.5%2096q0%2015-2.5%2029.5t-7.5%2028.5Zm-170-170-104-104%20104-104v208Zm-66.66%20270v-131.33l-80-80H182v106.66h122L408.67-322Zm-40-171.33Z%22%20filter%3D%22url%28%23dropShadow%29%22%20%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2240px%22%20viewBox%3D%220%20-960%20960%20960%22%20width%3D%2240px%22%20fill%3D%22%23FFFFFF%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cfilter%20id%3D%22dropShadow%22%20x%3D%22-20%25%22%20y%3D%22-20%25%22%20width%3D%22150%25%22%20height%3D%22150%25%22%3E%20%20%20%20%20%20%3CfeDropShadow%20dx%3D%226%22%20dy%3D%226%22%20stdDeviation%3D%228%22%20flood-color%3D%22black%22%20flood-opacity%3D%220.8%22%20%2F%3E%20%20%20%20%3C%2Ffilter%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20d%3D%22M560-131v-68.67q94.67-27.33%20154-105%2059.33-77.66%2059.33-176.33%200-98.67-59-176.67-59-78-154.33-104.66V-831q124%2028%20202%20125.5T840-481q0%20127-78%20224.5T560-131ZM120-360v-240h160l200-200v640L280-360H120Zm426.67%2045.33v-332Q599-628%20629.5-582T660-480q0%2055-30.83%20100.83-30.84%2045.84-82.5%2064.5ZM413.33-634l-104%20100.67H186.67v106.66h122.66l104%20101.34V-634Zm-96%20154Z%22%20filter%3D%22url%28%23dropShadow%29%22%20%2F%3E%3C%2Fsvg%3E\"","// Removes the parameter from the URL and returns the new URL\nexport function removedURLParameter(url: string, parameter: string) {\n  //prefer to use l.search if you have a location/link object\n  const urlparts = url.split('?');\n  if (urlparts.length >= 2) {\n    const prefix = encodeURIComponent(parameter) + '=';\n    const pars = urlparts[1].split(/[&;]/g);\n\n    //reverse iteration as may be destructive\n    for (let i = pars.length; i-- > 0; ) {\n      //idiom for string.startsWith\n      if (pars[i].lastIndexOf(prefix, 0) !== -1) {\n        pars.splice(i, 1);\n      }\n    }\n\n    return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');\n  }\n  return url;\n}\n\n// Changes the query param with the new uuid of the new active reel\nexport function changeActiveReelParam(\n  param: string,\n  value: string,\n  removeShared = false\n) {\n  const url = removedURLParameter(window.top?.location.href ?? '', param);\n  const newUrl = new URL(url);\n  newUrl.searchParams.append(param, value);\n  if (removeShared) {\n    newUrl.searchParams.delete('shared');\n  }\n  window.top?.history.replaceState(null, '', newUrl);\n}\n\nexport function formatPrice(price: number) {\n  const formatter = new Intl.NumberFormat('en-IN', {\n    minimumFractionDigits: 2,\n    maximumFractionDigits: 2,\n  });\n  return formatter.format(price);\n}\n\nexport function ingestCall(\n  eventType: string,\n  data: Record<string, string | number>\n) {\n  const videoId = new URLSearchParams(window.top?.location.search).get(\n    'video_id'\n  );\n  const sessionId = localStorage.getItem('dietpixels_session_id');\n  const userId = localStorage.getItem('dietpixels_user_id');\n  const body = {\n    event_type: eventType,\n    video_id: videoId,\n    session_id: sessionId,\n    user_id: userId,\n    ...data,\n  };\n\n  fetch('https://ingest.dietpixels.com', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify(body),\n  });\n}\n","import Swiper from 'swiper';\nimport {SlideResponse} from '../../types';\nimport muteIcon from '../../../assets/images/mute.svg';\nimport unmuteIcon from '../../../assets/images/unmute.svg';\nimport {ingestCall} from '../../helpers/utils';\n\nlet isFirstRun = true;\n\nexport function playActiveSlideVideo(\n  swiper: Swiper,\n  slides: SlideResponse,\n  mute = false,\n  playlistId: string\n) {\n  // This function plays the active video and pauses the next and prev videos\n  const prevReelSlide =\n    swiper.slides[\n      swiper.activeIndex <= 0\n        ? swiper.slides.length - 1\n        : swiper.activeIndex - 1\n    ];\n  const nextReelSlide =\n    swiper.slides[\n      swiper.activeIndex >= swiper.slides.length - 1\n        ? 0\n        : swiper.activeIndex + 1\n    ];\n  const reelSlide = swiper.slides[swiper.activeIndex];\n\n  // Setting global active reel slide reference\n  window.activeReelSlide = reelSlide;\n\n  const prevVideo: HTMLIFrameElement = prevReelSlide.querySelector(\n    '.video-player'\n  ) as HTMLIFrameElement;\n  const nextVideo = nextReelSlide.querySelector(\n    '.video-player'\n  ) as HTMLIFrameElement;\n  const video = reelSlide.querySelector('.video-player') as HTMLIFrameElement;\n\n  const isNextAvailable = swiper.slides.length - 1 > swiper.activeIndex;\n  const isPrevAvailable = swiper.activeIndex >= 1;\n\n  const params = new URLSearchParams({\n    autoplay: String(true),\n    controls: String(false),\n    loop: String(true),\n    aspectRatio: '9:16',\n  });\n\n  const shared = new URLSearchParams(window.top?.location.search).get('shared');\n  const currentVideoId = slides.videos[swiper.activeIndex].uuid;\n  const nextVideoId = slides.videos[swiper.activeIndex + 1]?.uuid;\n  const prevVideoId = slides.videos[swiper.activeIndex - 1]?.uuid;\n\n  // Providing src to the video\n  if (!video.src) {\n    const videoUrl =\n      slides.videos[swiper.activeIndex].url + '?' + params.toString();\n    video.src = videoUrl;\n\n    if (!shared) {\n      setTimeout(() => {\n        if (isCurrentVideoPlaying(currentVideoId)) {\n          playPauseToggle(video, false, mute);\n\n          video.contentWindow?.postMessage(\n            'userSession',\n            'https://video.dietpixels.net'\n          );\n        }\n      }, 1500);\n    }\n  }\n\n  // Providing src to the next video\n  if (\n    !nextVideo.src &&\n    (swiper.previousIndex < swiper.activeIndex || swiper.activeIndex == 0)\n  ) {\n    const nextVideoUrl =\n      slides.videos[isNextAvailable ? swiper.activeIndex + 1 : 0].url +\n      '?' +\n      params.toString();\n    nextVideo.src = nextVideoUrl;\n\n    nextVideo.addEventListener('load', () => {\n      setTimeout(() => {\n        if (!isCurrentVideoPlaying(nextVideoId)) {\n          playPauseToggle(nextVideo, true, mute);\n        }\n      }, 1500);\n    });\n  }\n  // Providing src to the prev video\n  if (\n    !prevVideo.src &&\n    (swiper.previousIndex > swiper.activeIndex ||\n      swiper.previousIndex == 0 ||\n      swiper.activeIndex == swiper.slides.length - 1)\n  ) {\n    const prevVideoUrl =\n      slides.videos[\n        isPrevAvailable ? swiper.activeIndex - 1 : slides.videos.length - 1\n      ].url +\n      '?' +\n      params.toString();\n    prevVideo.src = prevVideoUrl;\n\n    prevVideo.addEventListener('load', () => {\n      setTimeout(() => {\n        if (!isCurrentVideoPlaying(prevVideoId)) {\n          playPauseToggle(prevVideo, true, true);\n        }\n      }, 1500);\n    });\n  }\n\n  // If the iframes are loaded this will work to pause the next and prev videos\n  // and play the current active video\n  // TODO: need to fix this with some event to check when the iframe is loaded instead of timeout\n  if (prevVideo.src) {\n    playPauseToggle(prevVideo, true, true);\n  }\n\n  if (nextVideo.src) {\n    playPauseToggle(nextVideo, true, true);\n  }\n\n  if (video.src && !shared) {\n    setTimeout(() => {\n      if (isCurrentVideoPlaying(currentVideoId)) {\n        ingestCall('video_clicked', {\n          playlist_id: playlistId,\n        });\n      }\n    }, 5000);\n\n    playPauseToggle(video, false, mute);\n  }\n}\n\nconst isCurrentVideoPlaying = (videoId: string) => {\n  return (\n    videoId == new URLSearchParams(window.top?.location.search).get('video_id')\n  );\n};\n\nexport const playPauseToggle = (\n  ModalSlideItemVidEl: HTMLIFrameElement,\n  pause = false,\n  mute = false\n) => {\n  // Toggle play state . TODO should relay on data-[state] - DONE\n  // Storing the play/pause state in the data attribute of the DOM element\n  if (pause === true) {\n    // Sending the pause event to the player through iframe\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'pause',\n      'https://video.dietpixels.net'\n    );\n    // ModalSlideItemVidEl.dataset.play = 'false';\n    // Clearing the fetching of the played duration when video pauses.\n    // We have started it using setInterval below.\n    clearInterval(Number(ModalSlideItemVidEl.dataset.intervalID));\n  } else if (pause === false) {\n    // Sending the play event to the player through iframe\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'play',\n      'https://video.dietpixels.net'\n    );\n    // ModalSlideItemVidEl.dataset.play = 'true';\n\n    // Fetching played duration\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'duration',\n      'https://video.dietpixels.net'\n    );\n    // When the video starts playing, we are fetching the played duration\n    // after every 1 second using this setInterval\n    const flag = setInterval(() => {\n      ModalSlideItemVidEl.contentWindow?.postMessage(\n        'duration',\n        'https://video.dietpixels.net'\n      );\n    }, 1000);\n    // Setting the intervalID to the data attribute to clear it later when the\n    // video pauses.\n    ModalSlideItemVidEl.dataset.intervalID = flag.toString();\n  }\n\n  if (isFirstRun) {\n    setTimeout(() => {\n      muteVideo(ModalSlideItemVidEl, mute); // Execute logic with delay\n      isFirstRun = false; // Mark first run as completed\n    }, 800);\n  } else {\n    muteVideo(ModalSlideItemVidEl, mute); // Execute logic immediately\n  }\n};\n\n// Changes the mute state with given state\nexport const muteVideo = (\n  ModalSlideItemVidEl: HTMLIFrameElement,\n  mute = false\n) => {\n  const muteBtn = ModalSlideItemVidEl.parentElement?.querySelector(\n    '#muteButton'\n  ) as HTMLImageElement;\n  if (mute) {\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'mute',\n      'https://video.dietpixels.net'\n    );\n  } else {\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'unmute',\n      'https://video.dietpixels.net'\n    );\n  }\n  // Toggling between mute and unmute icons\n  muteBtn.src = mute ? muteIcon : unmuteIcon;\n};\n\n// Toggles mute state\nexport const toggleMute = (\n  ModalSlideItemVidEl: HTMLIFrameElement,\n  muteState: boolean,\n  toggle: (state: boolean) => void\n) => {\n  // Here we are storing the mute state in the window object\n  if (muteState == false || muteState === undefined) {\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'mute',\n      'https://video.dietpixels.net'\n    );\n    toggle(muteState);\n  } else if (muteState == true) {\n    ModalSlideItemVidEl.contentWindow?.postMessage(\n      'unmute',\n      'https://video.dietpixels.net'\n    );\n    toggle(muteState);\n  }\n  const muteBtn = ModalSlideItemVidEl.parentElement?.querySelector(\n    '#muteButton'\n  ) as HTMLImageElement;\n  // Toggling between mute and unmute icons\n  muteBtn.src = muteState ? muteIcon : unmuteIcon;\n};\n","import {css} from 'lit';\n\nexport const styleSheet = css`\n  .video-player-wrapper {\n    position: relative;\n  }\n  #muteButton {\n    height: 25px;\n    width: auto;\n    position: absolute;\n    right: 15px;\n    top: 25px;\n    cursor: pointer;\n    opacity: 0;\n  }\n  @media screen and (max-width: 640px) {\n    .swiper-button-next,\n    .swiper-button-prev {\n      display: none;\n    }\n    .video-player-wrapper {\n      width: calc(var(--image-aspect-ratio) * 100vh);\n      height: 100vh;\n    }\n    .video-player {\n      height: 100%;\n      width: 100%;\n      pointer-events: none;\n      border-color: black;\n      border: 0;\n      box-sizing: border-box;\n    }\n    #muteButton {\n      right: 58px;\n      top: 28px;\n      width: 30px;\n      height: 30px;\n    }\n  }\n  @media screen and (min-width: 640px) {\n    .modal-swiper-slide {\n      transform: translateZ(0) scale(90%) !important;\n    }\n    .modal-swiper-slide.swiper-slide-active {\n      transform: translateZ(0) scale(100%) !important;\n    }\n    .video-player-wrapper {\n      aspect-ratio: 1080/1920;\n    }\n    .video-player {\n      height: 100%;\n      width: 100%;\n      pointer-events: none;\n      border-color: transparent;\n      overflow: hidden;\n      box-sizing: border-box;\n    }\n  }\n  .swiper-modal-container {\n    /* sets height for entire slide or else have to override*/\n    height: 100vh;\n  }\n  .modal-swiper-slide {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n\n  .progressbar {\n    width: 0%;\n    height: 2px;\n    background: white;\n    transition: progress 0.1s linear infinite;\n  }\n  .progressbar.no-transition {\n    transition: none;\n  }\n\n  .like,\n  .share {\n    position: absolute;\n    height: 25px;\n    width: auto;\n    right: 19px;\n    cursor: pointer;\n  }\n  .share {\n    bottom: 340px;\n  }\n  @media screen and (min-width: 640px) {\n    .like {\n      bottom: 210px;\n    }\n    .share {\n      bottom: 170px;\n    }\n  }\n  .swiper-slide-active #muteButton {\n    opacity: 1;\n  }\n\n  .card-container {\n    margin-right: 4px;\n    margin-left: 4px;\n    display: flex;\n    overflow-x: auto;\n    margin-top: -160px;\n    max-width: 304px;\n    position: relative;\n    scroll-snap-type: x mandatory;\n    -ms-overflow-style: none;\n    gap: 12px;\n    padding-bottom: 14px;\n  }\n\n  .card-container::-webkit-scrollbar {\n    height: 6px;\n    background-color: #f5f5f5;\n  }\n\n  .card-container::-webkit-scrollbar-thumb {\n    background-color: #aaaaaa;\n  }\n\n  @media screen and (max-width: 640px) {\n    .card-container {\n      margin-left: 3%;\n      margin-right: 1%;\n      margin-top: -260px;\n      max-width: 360px;\n    }\n\n    .card-container::-webkit-scrollbar {\n      display: none;\n    }\n  }\n`;\n","import {css} from 'lit';\n\nexport const cardStyles = css`\n  #product-card {\n    display: flex;\n    width: 230px;\n    height: 120px;\n    background: white;\n    color: white;\n    border-radius: 8px;\n    scroll-snap-align: start;\n    cursor: default;\n  }\n\n  .single-product {\n    width: 92% !important;\n    margin: 0 auto;\n  }\n\n  @media screen and (max-width: 640px) {\n    #product-card {\n      width: 280px;\n    }\n    .single-product {\n      width: 20rem;\n      margin-left: 12%;\n    }\n  }\n\n  p {\n    color: black;\n  }\n\n  .redirectIcon {\n    float: right;\n    display: inline;\n    margin-right: 8px;\n  }\n\n  #product-thumbnail {\n    padding: 8px;\n    border-radius: 12px;\n    width: 80px;\n  }\n\n  .product-info {\n    color: black;\n    margin-top: 6px;\n    float: right;\n    width: 100%;\n  }\n\n  .product-title {\n    height: 32px;\n    font-size: 14px;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    line-clamp: 2;\n    -webkit-line-clamp: 2;\n  }\n\n  .product-description {\n    margin-top: 6px;\n    font-size: small;\n    font-weight: 500;\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    line-clamp: 2;\n    -webkit-line-clamp: 2;\n  }\n\n  .product-pricing {\n    height: 1.5rem;\n    margin-top: 6px;\n    font-size: 14px;\n  }\n\n  .product-shop-now {\n    margin-top: 8px;\n    height: 25px;\n    padding: 5px;\n    width: 90%;\n    color: white;\n    background-color: black;\n    border-radius: 4px;\n    border: none;\n    cursor: pointer;\n  }\n\n  .product-cart {\n    height: 20px;\n    margin-bottom: -4px;\n  }\n\n  .free-text {\n    color: green;\n    font-weight: bold;\n  }\n`;\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2210%22%20width%3D%2210%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23505050%22%20d%3D%22M320%200c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032l82.7%200L201.4%20265.4c-12.5%2012.5-12.5%2032.8%200%2045.3s32.8%2012.5%2045.3%200L448%20109.3l0%2082.7c0%2017.7%2014.3%2032%2032%2032s32-14.3%2032-32l0-160c0-17.7-14.3-32-32-32L320%200zM80%2032C35.8%2032%200%2067.8%200%20112L0%20432c0%2044.2%2035.8%2080%2080%2080l320%200c44.2%200%2080-35.8%2080-80l0-112c0-17.7-14.3-32-32-32s-32%2014.3-32%2032l0%20112c0%208.8-7.2%2016-16%2016L80%20448c-8.8%200-16-7.2-16-16l0-320c0-8.8%207.2-16%2016-16l112%200c17.7%200%2032-14.3%2032-32s-14.3-32-32-32L80%2032z%22%2F%3E%3C%2Fsvg%3E\"","import {LitElement, html, css} from 'lit';\nimport {customElement, property, state} from 'lit/decorators.js';\nimport {cardStyles} from './card-styles';\nimport {ProductData} from '../../types';\nimport {formatPrice} from '../../helpers/utils';\nimport redirectIcon from '../../../assets/images/redirect.svg';\nimport {ingestCall} from '../../helpers/utils';\n\n@customElement('card-slide')\nexport class Card extends LitElement {\n  @property({type: Object}) product: ProductData;\n  @property({type: Boolean}) isSingleProduct = false;\n  @property({type: String}) playlistId = '';\n  @property({type: String}) userId = '';\n  @state() sessionId = '';\n\n  constructor(product: ProductData) {\n    super();\n    this.product = product;\n  }\n\n  static override styles = [\n    css`\n      :host {\n        width: 100%;\n      }\n    `,\n    cardStyles,\n  ];\n\n  handleShopNowClick(\n    productId: string,\n    comparePrice: number,\n    displayPrice: number,\n    link: URL\n  ) {\n    window.open(link, '_blank');\n    ingestCall('buy_now', {\n      playlist_id: this.playlistId,\n      product_id: productId,\n      display_price: displayPrice * 100,\n      compare_price: comparePrice * 100,\n    });\n  }\n\n  override render() {\n    return html`\n      <div\n        id=\"product-card\"\n        class=\"${this.isSingleProduct ? 'single-product' : ''}\"\n      >\n        <img id=\"product-thumbnail\" src=${this.product?.thumbnail} />\n        <div class=\"product-info\">\n          <img class=\"redirectIcon\" src=${redirectIcon} @click=\"\" />\n          <div class=\"product-title\">${this.product?.display_title}</div>\n          <div class=\"product-pricing\">\n            ${Number(this.product?.display_price) === 0.0\n              ? html`<span class=\"free-text\">Free</span>`\n              : html`\n                  <span class=\"\">\n                    &#8377;${formatPrice(this.product?.display_price ?? 0)}\n                  </span>\n                  ${this.product?.display_price !== this.product?.compare_price\n                    ? html`\n                        <span\n                          class=\"line-through\"\n                          style=\"margin-left: 4px; color: grey; text-decoration: line-through;\"\n                        >\n                          &#8377;${formatPrice(\n                            this.product?.compare_price ?? 0\n                          )}\n                        </span>\n                      `\n                    : ''}\n                `}\n          </div>\n          <div>\n            <button\n              class=\"product-shop-now\"\n              @click=${() => {\n                this.handleShopNowClick(\n                  this.product.uuid,\n                  this.product.compare_price,\n                  this.product.display_price,\n                  new URL(this.product.link)\n                );\n              }}\n            >\n              Shop Now\n            </button>\n            <div></div>\n          </div>\n        </div>\n      </div>\n    `;\n  }\n}\n\n// <img\n//   class=\"product-cart\"\n//   src=${cartIcon}\n//   @click=\"\"\n// />\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%20height%3D%2240px%22%20width%3D%2240px%22%20fill%3D%22%23ffffff%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cfilter%20id%3D%22drop-shadow%22%20x%3D%22-50%25%22%20y%3D%22-50%25%22%20width%3D%22200%25%22%20height%3D%22200%25%22%3E%20%20%20%20%20%20%3CfeDropShadow%20dx%3D%226%22%20dy%3D%226%22%20stdDeviation%3D%2212%22%20flood-color%3D%22rgba%280%2C%200%2C%200%2C%200.8%29%22%20%2F%3E%20%20%20%20%3C%2Ffilter%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20filter%3D%22url%28%23drop-shadow%29%22%20d%3D%22M16.1%20260.2c-22.6%2012.9-20.5%2047.3%203.6%2057.3L160%20376l0%20103.3c0%2018.1%2014.6%2032.7%2032.7%2032.7c9.7%200%2018.9-4.3%2025.1-11.8l62-74.3%20123.9%2051.6c18.9%207.9%2040.8-4.5%2043.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448%20256zm52.1%2025.5L409.7%2090.6%20190.1%20336l1.2%201L68.2%20285.7zM403.3%20425.4L236.7%20355.9%20450.8%20116.6%20403.3%20425.4z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%20height%3D%2240px%22%20width%3D%2240px%22%20fill%3D%22%23ffffff%22%3E%20%20%3Cdefs%3E%20%20%20%20%3Cfilter%20id%3D%22drop-shadow%22%20x%3D%22-50%25%22%20y%3D%22-50%25%22%20width%3D%22200%25%22%20height%3D%22200%25%22%3E%20%20%20%20%20%20%3CfeDropShadow%20dx%3D%226%22%20dy%3D%226%22%20stdDeviation%3D%2212%22%20flood-color%3D%22rgba%280%2C%200%2C%200%2C%200.8%29%22%20%2F%3E%20%20%20%20%3C%2Ffilter%3E%20%20%3C%2Fdefs%3E%20%20%3Cpath%20filter%3D%22url%28%23drop-shadow%29%22%20d%3D%22M225.8%20468.2l-2.5-2.3L48.1%20303.2C17.4%20274.7%200%20234.7%200%20192.8l0-3.3c0-70.4%2050-130.8%20119.2-144C158.6%2037.9%20198.9%2047%20231%2069.6c9%206.4%2017.4%2013.8%2025%2022.3c4.2-4.8%208.7-9.2%2013.5-13.3c3.7-3.2%207.5-6.2%2011.5-9c0%200%200%200%200%200C313.1%2047%20353.4%2037.9%20392.8%2045.4C462%2058.6%20512%20119.1%20512%20189.5l0%203.3c0%2041.9-17.4%2081.9-48.1%20110.4L288.7%20465.9l-2.5%202.3c-8.2%207.6-19%2011.9-30.2%2011.9s-22-4.2-30.2-11.9zM239.1%20145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0%200%200%200c-23.1-25.9-58-37.7-92-31.2C81.6%20101.5%2048%20142.1%2048%20189.5l0%203.3c0%2028.5%2011.9%2055.8%2032.8%2075.2L256%20430.7%20431.2%20268c20.9-19.4%2032.8-46.7%2032.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69%205.4-92%2031.2c0%200%200%200-.1%20.1s0%200-.1%20.1l-17.8%2020c-.3%20.4-.7%20.7-1%201.1c-4.5%204.5-10.6%207-16.9%207s-12.4-2.5-16.9-7z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22%23ff0000%22%20d%3D%22M47.6%20300.4L228.3%20469.1c7.5%207%2017.4%2010.9%2027.7%2010.9s20.2-3.9%2027.7-10.9L464.4%20300.4c30.4-28.3%2047.6-68%2047.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347%2036.5%20300.6%2051.4%20268%2084L256%2096%20244%2084c-32.6-32.6-79-47.5-124.6-39.9C50.5%2055.6%200%20115.2%200%20185.1v5.8c0%2041.5%2017.2%2081.2%2047.6%20109.5z%22%2F%3E%3C%2Fsvg%3E\"","import {LitElement, html} from 'lit';\nimport {customElement, query, property, state} from 'lit/decorators.js';\n\nimport {\n  playActiveSlideVideo,\n  toggleMute,\n  playPauseToggle,\n} from './modal_slide_helpers';\nimport {styleSheet} from './modal_slide-style';\nimport {styleSheet as swiperStyleSheet} from '../shared_styles/swiper-styles';\nimport {SlideResponse, Video} from '../../types';\n\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\nimport {ingestCall} from '../../helpers/utils';\n\nimport {changeActiveReelParam} from '../../helpers/utils';\nimport '../card/card';\n\nimport muteIcon from '../../../assets/images/mute.svg';\nimport unmuteIcon from '../../../assets/images/unmute.svg';\nimport sendIcon from '../../../assets/images/send.svg';\nimport heartOutlinedIcon from '../../../assets/images/heart-outlined.svg';\nimport heartFilledIcon from '../../../assets/images/heart-filled.svg';\n\n@customElement('carousel-modal-slide')\nexport class ModalSlide extends LitElement {\n  static override styles = [swiperStyleSheet, styleSheet];\n\n  playlistId = '';\n  sessionId = '';\n  userId = '';\n\n  @state() shouldRender = false;\n  public swiper?: Swiper;\n\n  @query('.swiper-modal-container')\n  _ref_swiper_modal_container!: HTMLElement;\n\n  @query('.modal-next')\n  _ref_swiper_button_next!: HTMLElement;\n\n  @query('.modal-prev')\n  _ref_swiper_button_prev!: HTMLElement;\n\n  @property({type: Object})\n  data!: SlideResponse;\n\n  @property({type: Number})\n  initial_slide_index!: Number;\n\n  @property({type: Boolean})\n  loadFromUrl!: boolean;\n\n  swiperInitialized: boolean;\n  currentProgress: number;\n\n  private _mute: boolean;\n\n  set mute(value: boolean) {\n    this._mute = value;\n  }\n\n  get mute() {\n    return this._mute;\n  }\n\n  constructor() {\n    super();\n    this.swiperInitialized = false;\n    this._mute = false;\n    this.currentProgress = 0;\n    this.sessionId = '';\n    this.userId = '';\n  }\n\n  override firstUpdated() {\n    this.initSwiper();\n    setTimeout(() => {\n      this.loadFromUrl = false;\n    }, 0);\n  }\n\n  override updated() {\n    if (!this.swiperInitialized && this.swiper?.destroyed) {\n      this.initSwiper();\n    }\n  }\n\n  override connectedCallback() {\n    super.connectedCallback();\n    window.addEventListener('message', (e) => this._handleMessageFromPlayer(e));\n  }\n\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    window.removeEventListener('message', this._handleMessageFromPlayer);\n  }\n\n  initSwiper() {\n    if (this.swiperInitialized) return; // Prevent re-initialization\n    this.swiper = new Swiper(this._ref_swiper_modal_container, {\n      modules: [Navigation],\n      // Config for smaller screens\n      slidesPerView: 1,\n      centeredSlides: true,\n      direction: 'vertical',\n      initialSlide: Number(this.initial_slide_index), // Set the starting slide based on the clicked index\n      longSwipes: false,\n      navigation: {\n        nextEl: this._ref_swiper_button_next,\n        prevEl: this._ref_swiper_button_prev,\n      },\n      loop: false,\n      breakpoints: {\n        // Config for bigger screens\n        640: {\n          // autoHeight: true,\n          slidesPerView: 3,\n          spaceBetween: 0,\n          direction: 'horizontal',\n          rewind: true,\n          loop: false,\n          allowTouchMove: false,\n        },\n      },\n      // Events\n      on: {\n        init: (swiper) => {\n          // Playing the clicked video on initialization\n          // Play video on initial active slide\n          this.swiperInitialized = true;\n          playActiveSlideVideo(swiper, this.data, this.mute, this.playlistId);\n          changeActiveReelParam(\n            'video_id',\n            this.data.videos[swiper.activeIndex].uuid\n          );\n        },\n        destroy: (swiper) => {\n          this.swiperInitialized = false;\n          console.log('Swiper Destroyed');\n          const currentVideo = swiper.slides[swiper.activeIndex].querySelector(\n            '.video-player'\n          ) as HTMLIFrameElement;\n          if (currentVideo) {\n            playPauseToggle(currentVideo, true);\n            // currentVideo.pause(); // Pause the video on the current slide\n          }\n          this.remove();\n        },\n        update: () => {\n          console.log('Swiper Updated');\n        },\n        activeIndexChange: (swiper) => {\n          // Pause next and prev videos and play the active one when next/prev is pressed.\n          if (this.swiperInitialized) {\n            playActiveSlideVideo(\n              swiper,\n              this.data,\n              this._mute,\n              this.playlistId\n            );\n          }\n          if (swiper.originalParams.initialSlide !== swiper.activeIndex) {\n            changeActiveReelParam(\n              'video_id',\n              this.data.videos[swiper.activeIndex].uuid,\n              true\n            );\n          } else {\n            changeActiveReelParam(\n              'video_id',\n              this.data.videos[swiper.activeIndex].uuid,\n              false\n            );\n          }\n          // Changes the query param in the URL to make it sharable\n          // TODO: move the carouselVid param name to constants\n        },\n      },\n    });\n  }\n\n  _handleMessageFromPlayer(e: MessageEvent) {\n    if (\n      typeof e.data.userId != 'undefined' &&\n      e.data.sessionId != 'undefined'\n    ) {\n      this.sessionId = e.data.sessionId;\n      this.userId = e.data.userId;\n      localStorage.setItem('dietpixels_user_id', this.userId);\n      localStorage.setItem('dietpixels_session_id', this.sessionId);\n      this.shouldRender = true;\n      return;\n    }\n\n    if (\n      typeof e.data.currentDurationMs != 'undefined' &&\n      typeof e.data.totalDurationMs != 'undefined'\n    ) {\n      // Setting the width of the progressbar\n      if (window.activeReelSlide) {\n        const progressBar = window.activeReelSlide.querySelector(\n          '#progressbar'\n        ) as HTMLElement;\n        const progressWidth = Math.round(\n          (e.data.currentDurationMs / e.data.totalDurationMs) * 100\n        );\n        if (progressWidth < this.currentProgress)\n          progressBar.classList.add('no-transition');\n        else progressBar.classList.remove('no-transition');\n\n        this.currentProgress = progressWidth;\n        progressBar.style.width = progressWidth + '%';\n      }\n    }\n  }\n\n  _handleVideoLike(e: PointerEvent) {\n    e.stopPropagation();\n    const likeButton = e.target as HTMLImageElement;\n    // Fetching liked videos from the localStorage\n    const likedList =\n      JSON.parse(localStorage.getItem('likedVideos') || '[]') ?? [];\n    const activeIndex = this.swiper?.activeIndex;\n    const vidObj =\n      activeIndex !== undefined ? this.data.videos[activeIndex] : null;\n    // If not liked, they are stored in the liked array in the localstorage\n    if (vidObj && !likedList.includes(vidObj.uuid)) {\n      ingestCall('video_liked', {\n        playlist_id: this.playlistId,\n      });\n      localStorage.setItem(\n        'likedVideos',\n        JSON.stringify([...likedList, vidObj.uuid])\n      );\n      likeButton.src = heartFilledIcon;\n    }\n    // If liked, they are removed from the liked array in the localstorage\n    else if (vidObj) {\n      localStorage.setItem(\n        'likedVideos',\n        JSON.stringify([\n          ...likedList.filter((uuid: string) => uuid !== vidObj.uuid),\n        ])\n      );\n      likeButton.src = heartOutlinedIcon;\n    }\n  }\n  _handleVideoShare(e: Event) {\n    e.stopPropagation();\n    const params = new URLSearchParams(window.top?.location.search);\n    params.append('shared', 'true');\n    const activeIndex = this.swiper?.activeIndex;\n    const vidObj =\n      activeIndex !== undefined ? this.data.videos[activeIndex] : null;\n    if (vidObj) {\n      ingestCall('video_shared', {\n        playlist_id: this.playlistId,\n      });\n    }\n    // TODO: Need to detect the device instead of relying on the screen width\n    // Open the native share popup in android/ios devices\n    if (window.innerWidth < 1200)\n      navigator\n        .share({\n          title: document.title,\n          text: 'Have a look at this product!',\n          url: window.top?.location.href,\n        })\n        .then(() => {})\n        .catch((err) => console.log('Error while sharing', err));\n    // Or copy the link to the clipboard in computers\n    else {\n      const origin = window.top?.location.origin;\n      const pathname = window.top?.location.pathname;\n      const newUrl = `${origin}${pathname}?${params}`;\n      navigator.clipboard.writeText(newUrl);\n      this._showNotification('Link copied to clipboard!');\n    }\n  }\n\n  _showNotification(message: string) {\n    const notification = document.createElement('div');\n    notification.textContent = message;\n    notification.style.position = 'fixed';\n    notification.style.bottom = '20px';\n    notification.style.right = '20px';\n    notification.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';\n    notification.style.color = 'white';\n    notification.style.padding = '10px';\n    notification.style.borderRadius = '5px';\n    this.shadowRoot?.appendChild(notification);\n\n    setTimeout(() => {\n      this.shadowRoot?.removeChild(notification);\n    }, 3000);\n  }\n\n  _toggleMute(e: PointerEvent) {\n    const muteButton = e.target as HTMLImageElement;\n    const videoPlayer = (e.target as HTMLElement)?.parentElement?.querySelector(\n      '.video-player'\n    ) as HTMLIFrameElement;\n    toggleMute(\n      videoPlayer,\n      this.mute,\n      (currentState: boolean) => (this.mute = !currentState)\n    );\n    muteButton.src = this.mute ? muteIcon : unmuteIcon;\n  }\n\n  render_slide(videoItem: Video) {\n    const filteredItem = this.data.videos.filter(\n      (item) => item.uuid === videoItem.uuid\n    )[0];\n    return html`\n      <div class=\"swiper-slide modal-swiper-slide\">\n        <div class=\"video-player-wrapper\">\n          <img\n            id=\"muteButton\"\n            src=${this.mute ? muteIcon : unmuteIcon}\n            @click=${this._toggleMute}\n          />\n          <div\n            id=\"progressbar\"\n            class=\"progressbar\"\n            style=\"position:absolute;top:0;left:2px;\"\n          ></div>\n          <img\n            id=\"Like\"\n            class=\"like\"\n            src=${heartOutlinedIcon}\n            @click=${this._handleVideoLike}\n          />\n          <img\n            id=\"Share\"\n            class=\"share\"\n            src=${sendIcon}\n            @click=${this._handleVideoShare}\n          />\n          <iframe\n            class=\"video-player\"\n            allow=\"accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;\"\n            allowfullscreen\n            data-play=\"false\"\n          ></iframe>\n          ${filteredItem?.products.length > 0\n            ? html`\n                <div class=\"card-container\">\n                  ${filteredItem.products.map(\n                    (item, _, array) => html` <card-slide\n                      .product=\"${item}\"\n                      .isSingleProduct=\"${array.length === 1}\"\n                      .userId=\"${this.userId}\"\n                      .playlistId=\"${this.playlistId}\"\n                      .sessionId=\"${this.sessionId}\"\n                    >\n                    </card-slide>`\n                  )}\n                </div>\n              `\n            : ''}\n        </div>\n      </div>\n    `;\n  }\n\n  override render() {\n    return html`\n      <div class=\"swiper swiper-modal-container\">\n        <div class=\"swiper-wrapper\" id=\"modal-slides\">\n          <!-- Slides will be added dynamically -->\n          ${this.data.videos.map((_item, _idx) => this.render_slide(_item))}\n        </div>\n      </div>\n\n      <!-- Swiper controls -->\n      <div class=\"swiper-button-prev modal-prev\"></div>\n      <div class=\"swiper-button-next modal-next\"></div>\n    `;\n  }\n}\n","import {LitElement, html, css, PropertyValues} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\n\nimport {getSlides} from './helpers/data';\nimport {SlideResponse} from './types';\n\nimport './components/carousel/carousel';\nimport './components/modal/modal';\nimport './components/modal_slide/modal_slide';\nimport {Carousel} from './components/carousel/carousel';\nimport {Modal} from './components/modal/modal';\nimport {ModalSlide} from './components/modal_slide/modal_slide';\n\nimport {SlideClickEvent} from './helpers/events';\nimport {removedURLParameter} from './helpers/utils';\n\n@customElement('mobi-carousel')\nexport class MobiCarousel extends LitElement {\n  @property({type: String})\n  playlistId = '';\n\n  static override styles = [\n    css`\n      :host {\n        box-sizing: border-box;\n        padding: 1rem 0;\n      }\n      .modal-carousal {\n        width: min(100vw, 1080px);\n        user-select: none;\n      }\n    `,\n  ];\n\n  @property({type: Object})\n  data!: SlideResponse;\n\n  constructor() {\n    super();\n    this.data = {\n      uuid: '',\n      display_title: '',\n      description: '',\n      thumbnail: '',\n      videos: [],\n    };\n  }\n\n  override async firstUpdated() {\n    this.data = await getSlides(this.playlistId);\n  }\n\n  override updated(changedProperties: PropertyValues) {\n    if (changedProperties.has('data')) {\n      const params = new URLSearchParams(window.top?.location.search);\n      const videoID = params.get('video_id');\n      const slide_index_of_video = this.data.videos.findIndex(\n        (video) => video.uuid === videoID\n      );\n      if (videoID && slide_index_of_video >= 0)\n        this._showModalWithSlide(slide_index_of_video, true);\n    }\n  }\n\n  private _showModalWithSlide(slide_index: number, loadFromUrl = false) {\n    const modal = this.shadowRoot?.querySelector('#modalView') as Modal;\n\n    if (modal) {\n      modal.visible = true;\n\n      let slideElement = modal.querySelector(\n        'carousel-modal-slide'\n      ) as ModalSlide;\n      if (!slideElement) {\n        slideElement = document.createElement(\n          'carousel-modal-slide'\n        ) as ModalSlide;\n        slideElement.className = 'modal-carousal';\n        modal.appendChild(slideElement);\n      }\n\n      slideElement.data = this.data;\n      slideElement.playlistId = this.playlistId;\n      slideElement.initial_slide_index = slide_index;\n      slideElement.loadFromUrl = loadFromUrl;\n      slideElement.requestUpdate();\n    }\n  }\n\n  _handleSlideClick(e: SlideClickEvent) {\n    this._showModalWithSlide(e.detail.slide_index);\n  }\n\n  _handleModalClose() {\n    console.log('Modal Close recognized');\n    const modalSlideElement = this.shadowRoot?.querySelector(\n      'carousel-modal-slide'\n    ) as ModalSlide;\n    if (!modalSlideElement) return;\n    modalSlideElement.swiper?.destroy();\n    const url = removedURLParameter(\n      window.top?.location.href ?? '',\n      'video_id'\n    );\n    window.top?.history.replaceState(null, '', url);\n  }\n\n  override render() {\n    if (this.data.videos.length === 0) {\n      return html``;\n    }\n\n    return html`\n      <div>\n        <h1>${this.data.display_title}</h1>\n        <p>${this.data.description}</p>\n        <carousel-root\n          .data=${this.data}\n          @onSlideClick=${this._handleSlideClick}\n        ></carousel-root>\n        <carousel-modal\n          id=\"modalView\"\n          @modal-closed=${this._handleModalClose}\n        ></carousel-modal>\n      </div>\n    `;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'mobi-carousel': MobiCarousel;\n    'carousel-root': Carousel;\n    'carousel-modal': Modal;\n    'carousel-modal-slide': ModalSlide;\n  }\n}\n","import 'swiper/css';\nimport 'swiper/css/navigation';\nimport '../styles/styles.css';\n\nimport {MobiCarousel} from './mobi-carousel';\n\nexport default MobiCarousel;\n"]}