{"version":3,"file":"/js/app.js","mappings":"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","sources":["webpack://vinhdev_template_2024/webpack/runtime/chunk loaded","webpack://vinhdev_template_2024/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/shared/utils.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/shared/swiper-core.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/modules/navigation.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/modules/pagination.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/modules/parallax.mjs","webpack://vinhdev_template_2024/./node_modules/swiper/modules/autoplay.mjs","webpack://vinhdev_template_2024/./src/js/Handler/ImagesHandler.js","webpack://vinhdev_template_2024/./src/js/Classes/Base.js","webpack://vinhdev_template_2024/./src/js/Classes/InitPage.js","webpack://vinhdev_template_2024/./src/js/app.js","webpack://vinhdev_template_2024/./src/js/Handler/ClickedHandler.js","webpack://vinhdev_template_2024/./src/js/Handler/AriaHandler.js","webpack://vinhdev_template_2024/./src/js/Handler/PageHandler.js","webpack://vinhdev_template_2024/./src/js/Handler/CopyToClipboardHandler.js","webpack://vinhdev_template_2024/./src/js/modules/Slider.js","webpack://vinhdev_template_2024/./src/js/modules/BackToTop.js","webpack://vinhdev_template_2024/webpack/bootstrap","webpack://vinhdev_template_2024/webpack/runtime/hasOwnProperty shorthand","webpack://vinhdev_template_2024/webpack/runtime/jsonp chunk loading","webpack://vinhdev_template_2024/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\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 return [...element.children].filter(el => el.matches(selector));\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}\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, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v 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: 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;\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 if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 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\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\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\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 slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\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 // Update Index\n if (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 const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\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 (!swiper.wrapperEl.contains(targetEl)) 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) {\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) {\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 });\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] : 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.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\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 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 el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\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 swiper.el.swiper = null;\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);\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 if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\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","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","export const ImagesHandler = function() {\r\n const cache = {};\r\n\r\n function lazyLoad(img) {\r\n const parameter = {\r\n width: img.width || img.naturalWidth || img.parentElement.clientWidth || \"\",\r\n height: img.height || img.naturalHeight || img.parentElement.clientHeight || \"\"\r\n };\r\n\r\n // img.loading = \"lazy\";\r\n img.setAttribute('width', parameter.width);\r\n img.setAttribute('height', parameter.height);\r\n \r\n if (img.alt == \"\"){\r\n const pathParts = img.src.split('/');\r\n const fileName = pathParts[pathParts.length - 1];\r\n img.alt = fileName;\r\n }\r\n\r\n Loaded(img);\r\n }\r\n\r\n const applyClassesAndReplace = (img, svgContent) => {\r\n svgContent.style.opacity = \"0\";\r\n img.style.display = 'none';\r\n\r\n const imgClasses = img.classList;\r\n imgClasses.forEach(cls => {\r\n svgContent.classList.add(cls);\r\n });\r\n\r\n img.insertAdjacentElement('afterend', svgContent);\r\n\r\n const setImgSize = () => {\r\n svgContent.style.width = img.style.width;\r\n svgContent.style.height = img.style.height;\r\n svgContent.setAttribute('width', svgContent.clientWidth || img.naturalWidth || img.parentElement.clientWidth || \"\");\r\n svgContent.setAttribute('height', svgContent.clientHeight || img.naturalHeight || img.parentElement.clientHeight || \"\");\r\n svgContent.style.opacity = \"\";\r\n img.remove();\r\n };\r\n\r\n setImgSize();\r\n };\r\n\r\n const loadSvg = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (cache[src]) {\r\n resolve(cache[src].cloneNode(true));\r\n } else {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', src, true);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {\r\n let parser = new DOMParser();\r\n let svgContent = parser.parseFromString(xhr.responseText, 'image/svg+xml').documentElement;\r\n cache[src] = svgContent.cloneNode(true);\r\n resolve(svgContent);\r\n } else if (xhr.readyState === XMLHttpRequest.DONE) {\r\n reject(`Failed to load SVG: ${xhr.status}`);\r\n }\r\n };\r\n xhr.send();\r\n }\r\n });\r\n };\r\n async function handleSvg(img) {\r\n const src = img.dataset.lazysrc || img.src;\r\n try {\r\n const svgContent = await loadSvg(src);\r\n applyClassesAndReplace(img, svgContent);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n function handleImg(img){\r\n img.src = img.dataset.lazysrc;\r\n }\r\n \r\n async function handle(img, callback){\r\n try{\r\n const observer = new IntersectionObserver((entries, observer) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n callback(img);\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n });\r\n observer.observe(img);\r\n }catch(error){\r\n img.src = img.dataset.lazysrc;\r\n console.error('ERROR: ', error);\r\n }\r\n }\r\n\r\n function Loaded(img){\r\n if (img.classList.contains(\"svg\")){\r\n handle(img, handleSvg);\r\n }else if (img.dataset.lazysrc){\r\n handle(img, handleImg);\r\n }\r\n }\r\n\r\n function init() {\r\n const lazyImages = document.querySelectorAll('img');\r\n lazyImages.forEach(function(img) {\r\n lazyLoad(img);\r\n });\r\n }\r\n\r\n return {\r\n init: init\r\n };\r\n}\r\n","// export const cp = 1024; // computer min 1024\r\n// export const tablet = 768; // table min 768\r\n\r\nexport const delHandle = function (list, str, idxActived = -1) {\r\n\tif (typeof str == \"string\") {\r\n\t\tlist.forEach(function (item, idx) {\r\n\t\t\tif (idx !== idxActived){\r\n\t\t\t\titem.classList.remove(str);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const isNonNegativeNumber = function(value){\r\n\t// Sử dụng parseInt để chuyển đổi giá trị thành số nguyên\r\n\tlet numberValue = parseInt(value, 10);\r\n\r\n\t// Kiểm tra xem giá trị đã được chuyển đổi thành số thành công\r\n\tif (!isNaN(numberValue) && numberValue >= 0) {\r\n\t\treturn numberValue;\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\nexport const handeleClickGroup = function(group, idxActived, callBack = function(){}){\r\n\tlet items;\r\n\tgroup.forEach(function(gpItem, idxGp){\r\n\t\tif(idxGp === idxActived){\r\n\t\t\tgpItem.classList.add('is-showed');\r\n\t\t\tgpItem.style.display = \"\";\r\n\t\t\t// gpItem.style.opacity = \"\";\r\n\t\t\t// gpItem.style.visibility = \"\";\r\n\t\t\t// gpItem.style.transform = \"\";\r\n\t\t\tgpItem.style.animation = \".8s isShowed cubic-bezier(0.075, 0.82, 0.165, 1) forwards\";\r\n\r\n\t\t\titems = gpItem;\r\n\t\t}else{\r\n\t\t\tgpItem.classList.remove('is-showed');\r\n\t\t\tgpItem.style.display = \"none\";\r\n\t\t\tgpItem.style.opacity = \"0\";\r\n\t\t\tgpItem.style.visibility = \"hidden\";\r\n\t\t\tgpItem.style.transform = \"translateY(100px)\";\r\n\r\n\t\t\tgpItem.style.animation = \"\";\r\n\t\t}\r\n\t})\r\n\r\n\tcallBack(items);\r\n}\r\n\r\nexport const handleHiddenItem = function(item, callBack = function(){}){\r\n\titem.classList.remove('is-showed');\r\n\titem.style.display = \"none\";\r\n\titem.style.opacity = \"0\";\r\n\titem.style.visibility = \"hidden\";\r\n\titem.style.transform = \"translateY(100px)\";\r\n\titem.style.animation = \"\";\r\n\r\n\tcallBack(item);\r\n}\r\n\r\n\r\nexport const handleVisiblleItem = function(item, callBack = function(){}){\r\n\titem.classList.add('is-showed');\r\n\titem.style.display = \"\";\r\n\titem.style.animation = \".8s isShowed cubic-bezier(0.075, 0.82, 0.165, 1) forwards\";\r\n\tcallBack(item);\r\n}\r\n\r\nexport const getQueryParam = function(name) {\r\n\tlet searchParams = new URLSearchParams(window.location.search);\r\n\treturn searchParams.get(name);\r\n}\r\n\r\nexport const updateURLParams = function(paramsToUpdate) {\r\n\tlet searchParams = new URLSearchParams(window.location.search);\r\n\tfor (let key in paramsToUpdate) {\r\n\t\tif (paramsToUpdate.hasOwnProperty(key)) {\r\n\t\t\tsearchParams.set(key, paramsToUpdate[key]);\r\n\t\t}\r\n\t}\r\n\tlet newURL = window.location.pathname + '?' + searchParams.toString();\r\n\twindow.history.pushState({ ...paramsToUpdate }, '', newURL);\r\n}\r\n\r\nexport const removeQueryParam = function(paramName) {\r\n\tlet searchParams = new URLSearchParams(window.location.search);\r\n\r\n\tsearchParams.delete(paramName);\r\n\tlet newURL;\r\n\tif (searchParams.toString() !== '') {\r\n\t\tnewURL = window.location.pathname + '?' + searchParams.toString();\r\n\t} else {\r\n\t\tnewURL = window.location.pathname;\r\n\t}\r\n\r\n\thistory.replaceState({}, '', newURL);\r\n}\r\n\r\n\r\nexport const popupHandle = function(target, callBackClose = function(){return\"\"}){\r\n\ttry{\r\n\t\tif (typeof target === 'string'){\r\n\t\t\ttarget = document.querySelector(`${target}`);\r\n\t\t}\r\n\r\n\t\tfunction closeHandle(popup, callBack = function(){}){\r\n\t\t\tpopup.classList.remove('is-showed');\r\n\r\n\t\t\tcallBack(popup);\r\n\t\t}\r\n\r\n\t\tfunction clickHandleTarget(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tpopup.classList.add('is-showed');\r\n\t\t}\r\n\t\t\r\n\t\ttarget.removeEventListener('click', clickHandleTarget);\r\n\t\ttarget.addEventListener('click', clickHandleTarget);\r\n\r\n\t\tlet popup = document.querySelector(`[data-popup-section=\"${target.getAttribute('data-popup')}\"]`) || document.getElementById(`${target.getAttribute('data-popup')}`);\r\n\t\tif (!popup){\r\n\t\t\tthrow `Not found popup: ${target.getAttribute('data-popup')}`;\r\n\t\t}\r\n\r\n\t\tif (popup.classList.contains('initialized')){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet closes = popup.querySelectorAll('.close');\r\n\r\n\t\tfunction evtClose(e){\r\n\t\t\te.preventDefault();\r\n\t\t\tcloseHandle(popup, callBackClose);\r\n\t\t}\r\n\r\n\t\tcloses.forEach(function(close){\r\n\t\t\tclose.addEventListener('click', evtClose);\r\n\t\t})\r\n\t\t\r\n\t\tlet cancels = popup.querySelectorAll('.cancel');\r\n\t\tcancels.forEach(function(cancel){\r\n\t\t\tcancel.addEventListener('click', function(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tcloseHandle(popup);\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\tpopup.addEventListener('click', function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\tif (e.target === popup){\r\n\t\t\t\tcloseHandle(popup, callBackClose);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tpopup.classList.add(\"initialized\");\r\n\t}\r\n\tcatch(err){\r\n\t\tconsole.error(err);\r\n\t}\r\n}\r\n\r\n\r\n// export const stepNumber = function (finalNumber, duration = 2000, start = 0, callback){\r\n// \tconst startTime = performance.now() + start;\r\n\r\n// \tfunction step(currentTime) {\r\n// \t\tconst elapsedTime = currentTime - startTime;\r\n\r\n// \t\tif (elapsedTime > duration) {\r\n// \t\t callback(finalNumber);\r\n// \t\t} else {\r\n// \t\t const rate = elapsedTime / duration\r\n// \t\t const currentNumber = Math.round(rate * finalNumber)\r\n// \t\t callback(currentNumber)\r\n// \t\t requestAnimationFrame(step)\r\n// \t\t}\r\n// \t}\r\n\r\n// \trequestAnimationFrame(step);\r\n// }","import {updateURLParams, getQueryParam, isNonNegativeNumber} from \"./Base\"\r\n\r\nexport class InitPage {\r\n constructor(opts) {\r\n const pagination = class {\r\n constructor(opts) {\r\n this.options = Object.assign(pagination.defaults, opts);\r\n this.init();\r\n }\r\n\r\n init() {\r\n let plugin = this;\r\n let options = plugin.options;\r\n\r\n let pages = typeof(options.selector) === \"object\" ? options.selector : document.querySelector(`${options.selector}`);\r\n let totalItems = typeof(options.items) === \"object\" ? options.items : document.querySelectorAll(options.items);\r\n\r\n pages.innerHTML = \"\";\r\n let totalPage = Math.ceil(totalItems.length / options.page);\r\n \r\n let param = getQueryParam(options.param);\r\n let paramValue = 1;\r\n if (param){\r\n paramValue = isNonNegativeNumber(param);\r\n if (paramValue == -1 || paramValue < 1 || paramValue > totalPage){\r\n paramValue = 1;\r\n }\r\n }\r\n\r\n if (typeof options.callback == \"function\"){\r\n options.callback(plugin);\r\n }\r\n\r\n plugin.results = {\r\n items: totalItems,\r\n currentPage: paramValue,\r\n pages: pages,\r\n totalPages: totalPage\r\n }\r\n\r\n if (!pages || !totalItems || totalPage <= 1) {\r\n plugin.activeBox(-1);\r\n pages.remove();\r\n return false;\r\n }\r\n\r\n plugin.handleFeature(); \r\n }\r\n\r\n handleFeature(){\r\n this.paginationCreate();\r\n }\r\n\r\n getCurrentPage() {\r\n return this.results.currentPage;\r\n }\r\n\r\n setCurrentPage(number){\r\n let plugin = this;\r\n if (typeof number == \"number\" && number <= plugin.results.totalPages && number > 0){\r\n plugin.results.currentPage = number;\r\n plugin.paginationCreate();\r\n \r\n return plugin.results.currentPage;\r\n }\r\n return 0;\r\n }\r\n\r\n changePage(number){\r\n return this.setCurrentPage(number);\r\n }\r\n\r\n paginationCreate() {\r\n let plugin = this;\r\n let results = plugin.results;\r\n\r\n plugin.activeBox(results.currentPage);\r\n\r\n results.pages.innerHTML = plugin.createPagination(results.currentPage, results.totalPages);\r\n\r\n let strIcon = \t`\r\n \r\n \r\n `;\r\n\r\n plugin.hiddenNextPrev();\r\n\r\n plugin.changeIcon(results.pages.querySelector('.next'), strIcon);\r\n plugin.changeIcon(results.pages.querySelector('.prev'), strIcon);\r\n\r\n // click button\r\n plugin.clickButton();\r\n }\r\n\r\n createPagination(page, totalPages) {\r\n let strStart = `
  • prev
  • `;\r\n let strList = \"\";\r\n\r\n // khi tổng số page nhỏ hơn 5\r\n if (totalPages == 1) {\r\n return \"\";\r\n } else if (totalPages < 5) {\r\n for (let i = 1; i <= totalPages; i++) {\r\n let strI = i < 10 ? `0${i}` : `${i}`;\r\n if (i == page) {\r\n strList += `
  • ${strI}
  • `;\r\n } else {\r\n strList += `
  • ${strI}
  • `;\r\n }\r\n }\r\n } else if (\r\n (page <= 3 || page >= totalPages - 2) &&\r\n page > 0 &&\r\n page <= totalPages\r\n ) {\r\n // trường hợp active tạo thành 1 2 3 4 ... 20\r\n if (page <= 3) {\r\n if (page == 3 && totalPages == 5) {\r\n for (let i = 1; i <= totalPages; i++) {\r\n let strI = i < 10 ? `0${i}` : `${i}`;\r\n if (i == page) {\r\n strList += `
  • ${strI}
  • `;\r\n } else {\r\n strList += `
  • ${strI}
  • `;\r\n }\r\n }\r\n } else {\r\n let visiblePage = page + 1;\r\n if (page == 1) {\r\n visiblePage = 3;\r\n }\r\n for (let i = 1; i <= visiblePage; i++) {\r\n let strI = i < 10 ? `0${i}` : `${i}`;\r\n\r\n if (i == page) {\r\n strList += `
  • ${strI}
  • `;\r\n } else {\r\n strList += `
  • ${strI}
  • `;\r\n }\r\n }\r\n let strTotal = totalPages < 10 ? `0${totalPages}` : `${totalPages}`;\r\n strList += `
  • ...
  • `;\r\n strList += `
  • ${strTotal}
  • `;\r\n }\r\n }\r\n // trường hợp active tạo thành 1 ... 18 19 20\r\n else {\r\n strList += `
  • 01
  • `;\r\n strList += `
  • ...
  • `;\r\n\r\n let visiblePage2 = page - 1;\r\n if (page == totalPages) {\r\n visiblePage2 = totalPages - 2;\r\n }\r\n\r\n for (let i = visiblePage2; i <= totalPages; i++) {\r\n let strI = i < 10 ? `0${i}` : `${i}`;\r\n\r\n if (i == page) {\r\n strList += `
  • ${strI}
  • `;\r\n } else {\r\n strList += `
  • ${strI}
  • `;\r\n }\r\n }\r\n }\r\n }\r\n // trường hợp active tạo thành 1 ... 7 8 9 ... 20\r\n else if (page > 3 && page < totalPages - 2) {\r\n strList += `
  • 01
  • `;\r\n strList += `
  • ...
  • `;\r\n for (let i = page - 1; i <= page + 1; i++) {\r\n let strI = i < 10 ? `0${i}` : `${i}`;\r\n\r\n if (i == page) {\r\n strList += `
  • ${strI}
  • `;\r\n } else {\r\n strList += `
  • ${strI}
  • `;\r\n }\r\n }\r\n let strTotal = totalPages < 10 ? `0${totalPages}` : `${totalPages}`;\r\n strList += `
  • ...
  • `;\r\n strList += `
  • ${strTotal}
  • `;\r\n } else {\r\n console.log(\"error pagination!!!\");\r\n return \"\";\r\n }\r\n\r\n let strEnd = `
  • next
  • `;\r\n\r\n return ``;\r\n }\r\n\r\n activeBox(currentActive) {\r\n const results = this.results;\r\n const options = this.options;\r\n results.items.forEach(function (item) {\r\n item.style.display = \"none\";\r\n });\r\n\r\n results.items.forEach(function (item, index) {\r\n if (currentActive == -1){\r\n item.style.display = \"\";\r\n return;\r\n }\r\n\r\n let itemPage = Math.ceil((index + 1) / options.page);\r\n if (itemPage !== currentActive) {\r\n item.style.display = \"none\";\r\n }else{\r\n item.style.display = \"\";\r\n }\r\n });\r\n }\r\n\r\n clickButton() {\r\n let plugin = this;\r\n let liBtns = plugin.results.pages.getElementsByTagName(\"li\");\r\n\r\n for (let i = 0; i < liBtns.length; i++) {\r\n let item = liBtns[i];\r\n\r\n item.onclick = function () {\r\n let dataItem = parseInt(this.getAttribute(\"data-number\"));\r\n\r\n if (this.classList.contains(\"btn-hidden\") || dataItem == plugin.results.currentPage) {\r\n return;\r\n }\r\n\r\n if ( this.classList.contains(\"next\") && plugin.results.currentPage < plugin.results.totalPages) {\r\n // Click Next button\r\n plugin.setCurrentPage(++plugin.results.currentPage);\r\n } else if (this.classList.contains(\"prev\") && plugin.results.currentPage > 1) {\r\n // Click Prev button\r\n plugin.setCurrentPage(--plugin.results.currentPage);\r\n } else {\r\n if (dataItem < 0 || dataItem > plugin.results.totalPages) {\r\n return false;\r\n }\r\n plugin.setCurrentPage(dataItem);\r\n }\r\n\r\n \r\n // scroll \r\n if (plugin.options.scroll && plugin.options.scroll.target) {\r\n plugin.scrollToTop();\r\n }\r\n \r\n if (typeof plugin.params == \"object\"){\r\n plugin.params[plugin.options.param] = plugin.results.currentPage;\r\n }else{\r\n plugin.params = {\r\n [plugin.options.param]: plugin.results.currentPage\r\n }\r\n }\r\n\r\n let params = plugin.params;\r\n if (params){\r\n updateURLParams(params);\r\n }\r\n };\r\n }\r\n }\r\n\r\n scrollToTop() {\r\n let scroll = this.options.scroll;\r\n \r\n let topFeatured = 0;\r\n let featuredItem = typeof scroll.target == \"string\" ? document.querySelector(scroll.target) : scroll.target;\r\n\r\n if (featuredItem) {\r\n let parentFeatured = featuredItem.offsetParent;\r\n let count = 0;\r\n while (parentFeatured.nodeName !== \"BODY\" && count < 100) {\r\n topFeatured += parentFeatured.offsetTop;\r\n parentFeatured = parentFeatured.offsetParent;\r\n count++;\r\n }\r\n topFeatured += featuredItem.offsetTop;\r\n }\r\n\r\n if (scroll.sticky){\r\n let sticky = typeof scroll.sticky == \"string\" ? document.querySelector(scroll.sticky) : scroll.sticky;\r\n topFeatured -= sticky.clientHeight;\r\n }\r\n\r\n window.scrollTo({\r\n top: topFeatured,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n\r\n changeIcon(\r\n objClass,\r\n strIcon\r\n ) {\r\n objClass.innerHTML = strIcon;\r\n }\r\n\r\n hiddenNextPrev() {\r\n const totalPage = this.results.totalPages;\r\n const itemPrev = this.results.pages.querySelector('.prev');\r\n const itemNext = this.results.pages.querySelector('.next');\r\n if (itemPrev && itemNext && totalPage > 0){\r\n if (totalPage === 1) {\r\n itemPrev.classList.add(\"btn-hidden\");\r\n itemNext.classList.add(\"btn-hidden\");\r\n } else if (this.results.currentPage === 1) {\r\n itemPrev.classList.add(\"btn-hidden\");\r\n itemNext.classList.remove(\"btn-hidden\");\r\n } else if (this.results.currentPage === totalPage) {\r\n itemPrev.classList.remove(\"btn-hidden\");\r\n itemNext.classList.add(\"btn-hidden\");\r\n } else {\r\n itemPrev.classList.remove(\"btn-hidden\");\r\n itemNext.classList.remove(\"btn-hidden\");\r\n }\r\n }\r\n }\r\n\r\n destroy(){\r\n try{\r\n\r\n return true;\r\n }catch(error){\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n pagination.defaults = {\r\n param: \"paged\",\r\n selector: \"\", // Class pagination\r\n items: \"\", // Elements\r\n page: 0,\r\n scroll: {\r\n target: \"\", // target scroll\r\n sticky: \"\" // sticky\r\n },\r\n callback: function(){\r\n return {\r\n type: \"clicked\", // or \"popstate\"\r\n };\r\n }\r\n };\r\n\r\n this.pagination = new pagination(opts);\r\n }\r\n\r\n getCurrentPage(){\r\n return this.pagination.getCurrentPage();\r\n }\r\n setCurrentPage(number){\r\n return this.pagination.changePage(number);\r\n }\r\n\r\n destroy(){\r\n return this.pagination.destroy();\r\n }\r\n}\r\n","// Generals\r\nimport { Slider } from \"./modules/Slider\";\r\nimport { BackToTop } from \"./modules/BackToTop\";\r\n\r\nimport { ClickedHandler } from \"./Handler/ClickedHandler\";\r\nimport { AriaHandler } from \"./Handler/AriaHandler\";\r\nimport { ImagesHandler } from \"./Handler/ImagesHandler\";\r\nimport { PageHandler } from \"./Handler/PageHandler\";\r\nimport { CopyToClipboardHandler } from \"./Handler/CopyToClipboardHandler\";\r\n\r\nconst BraneyModulesManager = {\r\n generals: {\r\n ClickedHandler: ClickedHandler,\r\n AriaHandler: AriaHandler,\r\n ImagesHandler: ImagesHandler,\r\n PageHandler: PageHandler,\r\n CopyToClipboardHandler: CopyToClipboardHandler,\r\n \r\n Slider: Slider,\r\n BackToTop: BackToTop,\r\n },\r\n \r\n // modules: {\r\n \r\n // },\r\n\r\n runModule: function() {\r\n // General init\r\n for (let general in this.generals) {\r\n if (this.generals.hasOwnProperty(general)) {\r\n this.generals[general]().init();\r\n }\r\n }\r\n\r\n // Module init\r\n // if (this.modules[moduleName]){\r\n // const module = this.modules[moduleName]();\r\n // module.init();\r\n // }\r\n }\r\n};\r\nBraneyModulesManager.runModule();\r\n\r\n// window.addEventListener('DOMContentLoaded', function(){\r\n// })\r\n\r\n// registerServiceWorker();\r\n// const registerServiceWorker = async () => {\r\n// if (\"serviceWorker\" in navigator) {\r\n// try {\r\n// const registration = await navigator.serviceWorker.register(\"/sw.js\", {\r\n// scope: \"/\",\r\n// });\r\n// if (registration.installing) {\r\n// console.log(\"Service worker installing\");\r\n// } else if (registration.waiting) {\r\n// console.log(\"Service worker installed\");\r\n// } else if (registration.active) {\r\n// console.log(\"Service worker active\");\r\n// }\r\n// } catch (error) {\r\n// console.error(`Registration failed with ${error}`);\r\n// }\r\n// }\r\n// };\r\n\r\n","export const ClickedHandler = function() {\r\n const init = function(){\r\n const jsClicks = document.querySelectorAll('.jsClicked');\r\n jsClicks.forEach(function(item){\r\n let link = item.querySelector('a');\r\n if (!link) return;\r\n item.style.cursor = \"pointer\";\r\n item.addEventListener('click', function(e){\r\n e.preventDefault();\r\n window.location.href = link.href;\r\n })\r\n })\r\n }\r\n return {\r\n init: init\r\n }\r\n}","export const AriaHandler = function() {\r\n const init = function(){\r\n handleModal();\r\n handleChecked();\r\n }\r\n function handleModal(){\r\n const ariaModal = document.querySelectorAll('.js-aria-modal');\r\n ariaModal.forEach((item) => {\r\n let jsOpened = item.querySelector('.jsopened');\r\n let jsClosed = item.querySelectorAll('.jsclosed');\r\n if (!jsOpened){\r\n return;\r\n }\r\n let modal = item.querySelector('[aria-modal]');\r\n modal.style.display = \"none\";\r\n\r\n jsOpened.addEventListener('click', function(e){\r\n e.preventDefault();\r\n modal.style.display = \"\";\r\n })\r\n \r\n jsClosed.forEach((close) => {\r\n close.addEventListener('click', function(e){\r\n e.preventDefault();\r\n modal.style.display = \"none\";\r\n })\r\n })\r\n })\r\n }\r\n function handleChecked(){\r\n const ariaSelected = document.querySelectorAll('.js-aria-selected');\r\n ariaSelected.forEach((item) => {\r\n let selectedGroup = item.querySelectorAll('[aria-selected]');\r\n selectedGroup.forEach((selItem) =>{\r\n selItem.addEventListener('click', function(e){\r\n const isSelected = this.getAttribute('aria-selected') === 'true';\r\n this.setAttribute('aria-selected', !isSelected);\r\n })\r\n })\r\n }) \r\n }\r\n return {\r\n init: init\r\n }\r\n}","import {InitPage} from \"../Classes/InitPage\";\r\n\r\nexport const PageHandler = function(){\r\n\r\n\r\n const options = {\r\n handler: normal\r\n }\r\n\r\n const init = () => {\r\n const jsPages = document.querySelectorAll('.js-pagination');\r\n jsPages.forEach((item) => {\r\n try{\r\n let callback = item.dataset.type || \"handler\";\r\n options[callback](item);\r\n }catch(error){\r\n console.error(\"ERROR: \", error);\r\n }\r\n })\r\n }\r\n\r\n function normal(item){\r\n const param = \"paged\";\r\n const paginationInit = new InitPage({\r\n param: param,\r\n selector: item.querySelector('.pagination'),\r\n items: item.querySelectorAll('.list>.group'),\r\n page: 8,\r\n scroll: {\r\n target: item,\r\n sticky: \"header\"\r\n },\r\n });\r\n\r\n window.addEventListener('popstate', function(e){\r\n let valueParam = e.state && e.state[param] ? e.state[param] : getQueryParam(param) ? parseInt(getQueryParam(param)) : 1;\r\n paginationInit.setCurrentPage(valueParam);\r\n })\r\n return paginationInit;\r\n }\r\n\r\n return {\r\n init: init\r\n }\r\n}","export const CopyToClipboardHandler = function (){\r\n const selectors = {\r\n copyText: '.jsCopyClipboard'\r\n }\r\n const init = function(){\r\n document.querySelectorAll(selectors.copyText).forEach(function(item){\r\n item.onclick = function(e) {\r\n e.preventDefault();\r\n copyToClipboard(item, handle);\r\n };\r\n })\r\n }\r\n\r\n function setTooltip(selector, message){\r\n selector.classList.add('tooltip');\r\n selector.setAttribute('title', message);\r\n selector.style.pointerEvents = \"none\";\r\n \r\n let innerText = selector.innerHTML;\r\n selector.innerHTML = ``;\r\n \r\n setTimeout(function() {\r\n selector.innerHTML = innerText; \r\n selector.removeAttribute('title');\r\n selector.classList.remove('tooltip');\r\n selector.style.pointerEvents = \"\";\r\n }, 1000);\r\n }\r\n\r\n function handle(status = \"\", selector = null){\r\n if (status == \"success\" && selector){\r\n setTooltip(selector, \"Copied!\");\r\n }\r\n }\r\n\r\n const copyToClipboard = function(selector, callback = function(){}) {\r\n try{\r\n const copyText = selector.href;\r\n\t\t\tconst input = document.createElement(\"input\");\r\n\t\t\tinput.value = copyText;\r\n\r\n\t\t\tinput.setAttribute('type', 'text');\r\n\t\t\tinput.style.height = \"0\";\r\n\t\t\tinput.style.opacity = \"0\";\r\n\r\n\t\t\tlet body = document.querySelector('body');\r\n\t\t\tbody.appendChild(input);\r\n\t\t\tinput.select();\r\n\r\n\t\t\tdocument.execCommand(\"copy\");\r\n\t\t\tinput.remove();\r\n console.log(selector)\r\n\r\n\t\t\tcallback('success', selector);\r\n\t\t}\r\n\t\tcatch (error) {\r\n console.error(\"ERROR CopyToClipboardJs: \", error);\r\n\t\t}\r\n\r\n }\r\n\r\n return {\r\n init: init\r\n }\r\n}","/**\r\n * Slider\r\n */\r\nimport Swiper from 'swiper';\r\nimport { \r\n Parallax, \r\n Navigation, \r\n Pagination, \r\n EffectCreative, \r\n EffectCoverflow, \r\n Autoplay} from 'swiper/modules';\r\n\r\n\r\nexport const Slider = function() {\r\n const selectors = {\r\n 'slider': '.js-slider',\r\n };\r\n\r\n const options = {\r\n slideHero: {\r\n modules: [Pagination, Navigation, Parallax, Autoplay],\r\n parallax: true,\r\n touchRatio: 0.8,\r\n\r\n pagination: {\r\n el: '.swiper-pagination',\r\n type: 'bullets',\r\n dynamicBullets: false,\r\n clickable: true,\r\n },\r\n\r\n spaceBetween: 30,\r\n slidesPerView: 'auto',\r\n grabCursor: true,\r\n\r\n // slideToClickedSlide: true,,\r\n touchMove: false,\r\n loop: true,\r\n\r\n speed: 1200,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false\r\n },\r\n\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n },\r\n slideLogos: {\r\n modules: [Autoplay],\r\n spaceBetween: 40,\r\n grabCursor: true,\r\n a11y: false,\r\n freeMode: true,\r\n speed: 9000,\r\n loop: true,\r\n slidesPerView: \"auto\",\r\n\r\n autoplay: {\r\n delay: 0.5,\r\n disableOnInteraction: false,\r\n },\r\n breakpoints: {\r\n 0: {\r\n spaceBetween: 30,\r\n },\r\n 480: {\r\n spaceBetween: 30,\r\n },\r\n 768: {\r\n spaceBetween: 40,\r\n },\r\n 1024: {\r\n spaceBetween: 100,\r\n }\r\n },\r\n },\r\n\r\n slideRuledGrid: {\r\n modules: [Pagination],\r\n\r\n spaceBetween: 30,\r\n slidesPerView: 1.5,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n type: 'bullets',\r\n dynamicBullets: true,\r\n clickable: true,\r\n },\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1.1,\r\n spaceBetween: 10,\r\n },\r\n 390: {\r\n slidesPerView: 1.5,\r\n spaceBetween: 10,\r\n },\r\n 768: {\r\n slidesPerView: 2.1,\r\n spaceBetween: 30,\r\n },\r\n 1024: {\r\n slidesPerView: 3.1,\r\n spaceBetween: 80,\r\n }\r\n },\r\n },\r\n slideReviewsGrid: {\r\n modules: [Pagination, Autoplay],\r\n\r\n spaceBetween: 30,\r\n slidesPerView: 1,\r\n autoHeight: true,\r\n\r\n pagination: {\r\n el: '.swiper-pagination',\r\n type: 'bullets',\r\n dynamicBullets: true,\r\n clickable: true,\r\n },\r\n\r\n speed: 1200,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false\r\n },\r\n\r\n breakpoints: {\r\n 0: {\r\n spaceBetween: 10,\r\n },\r\n 390: {\r\n spaceBetween: 10,\r\n },\r\n 768: {\r\n spaceBetween: 20,\r\n },\r\n 1024: {\r\n spaceBetween: 30,\r\n }\r\n },\r\n },\r\n slideCertificates: {\r\n modules: [Pagination, Autoplay],\r\n spaceBetween: 40,\r\n slidesPerView: 'auto',\r\n\r\n speed: 1200,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false\r\n },\r\n pagination: {\r\n el: '.swiper-pagination',\r\n type: 'bullets',\r\n dynamicBullets: true,\r\n clickable: true,\r\n },\r\n breakpoints: {\r\n 0: {\r\n spaceBetween: 20,\r\n },\r\n 390: {\r\n spaceBetween: 20,\r\n },\r\n 768: {\r\n spaceBetween: 20,\r\n },\r\n 1024: {\r\n spaceBetween: 40,\r\n }\r\n },\r\n }\r\n }\r\n\r\n const init = () => {\r\n slider();\r\n ruledGridHandle();\r\n reviewsGridHandle();\r\n };\r\n\r\n function slider() {\r\n const slideSelectors = document.querySelectorAll(selectors.slider);\r\n slideSelectors.forEach(function(itemSlider){\r\n var option = itemSlider.dataset.slide == \"slideHero\" ? options.slideHero \r\n : itemSlider.dataset.slide == \"slideLogos\" ? options.slideLogos \r\n : itemSlider.dataset.slide == \"slideCertificates\" ? options.slideCertificates \r\n : {};\r\n itemSlider.style.display = \"\";\r\n var sw = new Swiper(itemSlider, option);\r\n sw.disable();\r\n\r\n const observeSwiper = new IntersectionObserver((entries) => {\r\n entries.forEach((entry, index) => {\r\n if (entry.isIntersecting){\r\n sw.enable();\r\n sw.update();\r\n sw.autoplay && sw.autoplay.start();\r\n }else{\r\n sw.autoplay && sw.autoplay.pause();\r\n sw.disable();\r\n }\r\n })\r\n })\r\n\r\n observeSwiper.observe(itemSlider);\r\n });\r\n }\r\n\r\n function ruledGridHandle(){\r\n const rulesGrid = document.querySelectorAll('.ruled-grid');\r\n\r\n rulesGrid.forEach((rule) => {\r\n const dtSlide = rule.dataset.slide || \"\";\r\n const optSw = options[dtSlide];\r\n if (!optSw) return;\r\n\r\n if (window.innerWidth < 768){\r\n rule.className = \"swiper-wrapper\";\r\n for(let i = 0; i < rule.children.length; i++){\r\n rule.children[i]?.classList.add('swiper-slide');\r\n rule.children[i]?.classList.remove('group');\r\n }\r\n \r\n let parentRule = rule.parentElement;\r\n let swiper = document.createElement('div');\r\n swiper.classList.add('swiper');\r\n\r\n swiper.style.width = \"calc(100% + var(--sidespace) )\";\r\n swiper.style.maxWidth = \"calc(100% + var(--sidespace) )\";\r\n \r\n // let container = parentRule;\r\n // let i = 0;\r\n\r\n // while(!container.classList.contains('container') && i < 10){\r\n // container = container.parentElement;\r\n // i++;\r\n // }\r\n\r\n // container.classList.add('container-right');\r\n // container.classList.remove('container');\r\n \r\n let swpagination = document.createElement('div');\r\n swpagination.className = 'swiper-pagination swiper-pagination-right';\r\n\r\n swiper.appendChild(rule);\r\n swiper.appendChild(swpagination);\r\n parentRule.appendChild(swiper);\r\n\r\n new Swiper(swiper, optSw);\r\n }\r\n })\r\n }\r\n\r\n function reviewsGridHandle(){\r\n const reviewsGrid = document.querySelectorAll('.reviews-grid');\r\n\r\n reviewsGrid.forEach((review) => {\r\n const dtSlide = review.dataset.slide || \"\";\r\n const optSw = options[dtSlide];\r\n if (!optSw) return;\r\n\r\n if (window.innerWidth < 768){\r\n review.className = \"swiper-wrapper\";\r\n for(let i = 0; i < review.children.length; i++){\r\n review.children[i]?.classList.add('swiper-slide');\r\n review.children[i]?.classList.remove('group');\r\n }\r\n \r\n let parentReview = review.parentElement;\r\n let swiper = document.createElement('div');\r\n swiper.classList.add('swiper');\r\n \r\n let swpagination = document.createElement('div');\r\n swpagination.className = 'swiper-pagination';\r\n\r\n swiper.appendChild(review);\r\n swiper.appendChild(swpagination);\r\n parentReview.appendChild(swiper);\r\n\r\n new Swiper(swiper, optSw);\r\n setTimeout(function(){\r\n swpagination.classList.add('swiper-pagination-right')\r\n }, 1000)\r\n }\r\n })\r\n }\r\n\r\n return {\r\n init: init\r\n }\r\n}","export const BackToTop = function(){\r\n const init = () => {\r\n const backtotop = document.querySelectorAll('.jsbacktotop');\r\n backtotop.forEach(function(item){\r\n item.addEventListener('click', function(e){\r\n e.preventDefault();\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n })\r\n })\r\n }\r\n return {\r\n init: init\r\n }\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t847: 0,\n\t252: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvinhdev_template_2024\"] = self[\"webpackChunkvinhdev_template_2024\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [252], () => (__webpack_require__(488)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [252], () => (__webpack_require__(65)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","win","window","delay","now","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","elementStyle","prop","child","previousSibling","parents","parent","parentElement","push","elementOuterSize","size","includeMargins","offsetWidth","e","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses","slideEl","condition","className","contains","remove","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","pagination","clickable","isHidden","toggle","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","Parallax","parallax","elementsSelector","setTransform","rtlFactor","p","opacity","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","Autoplay","timeout","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","run","delayForce","currentSlideDelay","activeSlideEl","getSlideDelay","proceed","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","_regeneratorRuntime","r","n","hasOwnProperty","defineProperty","Symbol","iterator","asyncIterator","u","toStringTag","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","charAt","rval","handle","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","updateURLParams","paramsToUpdate","searchParams","URLSearchParams","set","newURL","_objectSpread","InitPage","_createClass","opts","_classCallCheck","plugin","pages","concat","totalItems","items","numberValue","totalPage","page","param","get","paramValue","results","currentPage","totalPages","activeBox","handleFeature","paginationCreate","setCurrentPage","createPagination","strIcon","hiddenNextPrev","changeIcon","clickButton","strList","strI","visiblePage","strTotal","visiblePage2","log","currentActive","display","itemPage","liBtns","onclick","dataItem","scroll","scrollToTop","topFeatured","featuredItem","parentFeatured","offsetParent","count","sticky","top","left","objClass","itemPrev","itemNext","getCurrentPage","changePage","generals","ClickedHandler","link","AriaHandler","jsOpened","jsClosed","modal","close","selItem","isSelected","ImagesHandler","cache","lazyLoad","img","parameter","naturalWidth","naturalHeight","alt","pathParts","fileName","handleSvg","dataset","lazysrc","handleImg","Loaded","applyClassesAndReplace","svgContent","insertAdjacentElement","loadSvg","cloneNode","xhr","XMLHttpRequest","open","onreadystatechange","readyState","DONE","status","DOMParser","parseFromString","responseText","send","_x","_handleSvg","_callee","_context","t0","_x2","_x3","_handle","_callee2","_context2","IntersectionObserver","entry","isIntersecting","PageHandler","paginationInit","valueParam","state","getQueryParam","CopyToClipboardHandler","selectors","message","pointerEvents","innerText","setTooltip","copyToClipboard","copyText","input","appendChild","select","execCommand","Slider","slideHero","touchMove","slideLogos","a11y","slideRuledGrid","slideReviewsGrid","slideCertificates","itemSlider","option","sw","rule","dtSlide","optSw","_rule$children$i","_rule$children$i2","parentRule","maxWidth","swpagination","review","_review$children$i","_review$children$i2","parentReview","BackToTop","runModule","general","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","O","result","chunkIds","notFulfilled","Infinity","fulfilled","j","every","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}