{"version":3,"file":"vendor.js","mappings":"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","sources":["webpack://pinesol/./node_modules/bootstrap/js/dist/base-component.js","webpack://pinesol/./node_modules/bootstrap/js/dist/util/index.js","webpack://pinesol/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://pinesol/./node_modules/swiper/shared/utils.mjs","webpack://pinesol/./node_modules/swiper/shared/swiper-core.mjs","webpack://pinesol/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://pinesol/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://pinesol/./node_modules/swiper/modules/manipulation.mjs","webpack://pinesol/./node_modules/swiper/shared/effect-init.mjs","webpack://pinesol/./node_modules/swiper/shared/effect-target.mjs","webpack://pinesol/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://pinesol/./node_modules/swiper/shared/create-shadow.mjs","webpack://pinesol/./node_modules/swiper/swiper-bundle.mjs","webpack://pinesol/./node_modules/swiper/modules/virtual.mjs","webpack://pinesol/./node_modules/swiper/modules/keyboard.mjs","webpack://pinesol/./node_modules/swiper/modules/mousewheel.mjs","webpack://pinesol/./node_modules/swiper/modules/navigation.mjs","webpack://pinesol/./node_modules/swiper/modules/pagination.mjs","webpack://pinesol/./node_modules/swiper/modules/scrollbar.mjs","webpack://pinesol/./node_modules/swiper/modules/parallax.mjs","webpack://pinesol/./node_modules/swiper/modules/zoom.mjs","webpack://pinesol/./node_modules/swiper/modules/controller.mjs","webpack://pinesol/./node_modules/swiper/modules/a11y.mjs","webpack://pinesol/./node_modules/swiper/modules/history.mjs","webpack://pinesol/./node_modules/swiper/modules/hash-navigation.mjs","webpack://pinesol/./node_modules/swiper/modules/autoplay.mjs","webpack://pinesol/./node_modules/swiper/modules/thumbs.mjs","webpack://pinesol/./node_modules/swiper/modules/free-mode.mjs","webpack://pinesol/./node_modules/swiper/modules/grid.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-fade.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-cube.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-flip.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-coverflow.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-creative.mjs","webpack://pinesol/./node_modules/swiper/modules/effect-cards.mjs","webpack://pinesol/./node_modules/bootstrap/js/dist/util/config.js","webpack://pinesol/./node_modules/electro-privacy/dist/otDnsScript1.js","webpack://pinesol/./node_modules/jquery-lazy/jquery.lazy.js","webpack://pinesol/./node_modules/bootstrap/js/dist/dom/data.js","webpack://pinesol/./node_modules/bootstrap/js/dist/dom/manipulator.js","webpack://pinesol/./node_modules/parsleyjs/dist/parsley.js","webpack://pinesol/./node_modules/bootstrap/js/dist/dom/selector-engine.js","webpack://pinesol/./node_modules/toggle-selection/index.js","webpack://pinesol/./node_modules/slick-carousel/slick/slick.js","webpack://pinesol/./node_modules/bootstrap/js/dist/collapse.js","webpack://pinesol/./node_modules/jquery-stalker/jquery.stalker.js","webpack://pinesol/./node_modules/bootstrap/js/dist/dom/event-handler.js","webpack://pinesol/./node_modules/copy-to-clipboard/index.js"],"sourcesContent":["/*!\n * Bootstrap base-component.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./util/config.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.EventHandler, global.Config, global.Index));\n})(this, (function (Data, EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const VERSION = '5.3.3';\n\n /**\n * Class definition\n */\n\n class BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = index_js.getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n index_js.executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(index_js.getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n }\n\n return BaseComponent;\n\n}));\n//# sourceMappingURL=base-component.js.map\n","/*!\n * Bootstrap index.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Index = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const MAX_UID = 1000000;\n const MILLISECONDS_MULTIPLIER = 1000;\n const TRANSITION_END = 'transitionend';\n\n /**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\n const parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n };\n\n // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n const toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n /**\n * Public Util API\n */\n\n const getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n };\n const getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n const isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n };\n const getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n };\n const isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n };\n const isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n };\n const findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n };\n const noop = () => {};\n\n /**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n const reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n };\n const getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n };\n const DOMContentLoadedCallbacks = [];\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n };\n const isRTL = () => document.documentElement.dir === 'rtl';\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n };\n const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n };\n\n /**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n };\n\n exports.defineJQueryPlugin = defineJQueryPlugin;\n exports.execute = execute;\n exports.executeAfterTransition = executeAfterTransition;\n exports.findShadowRoot = findShadowRoot;\n exports.getElement = getElement;\n exports.getNextActiveElement = getNextActiveElement;\n exports.getTransitionDurationFromElement = getTransitionDurationFromElement;\n exports.getUID = getUID;\n exports.getjQuery = getjQuery;\n exports.isDisabled = isDisabled;\n exports.isElement = isElement;\n exports.isRTL = isRTL;\n exports.isVisible = isVisible;\n exports.noop = noop;\n exports.onDOMContentLoaded = onDOMContentLoaded;\n exports.parseSelector = parseSelector;\n exports.reflow = reflow;\n exports.toType = toType;\n exports.triggerTransitionEnd = triggerTransitionEnd;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=index.js.map\n","/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\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 const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\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.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\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.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).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.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).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 const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\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 = isFreeMode ? snapGrid[prevSnapIndex] : 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, initial) {\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 initial\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\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 initialSlide\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 || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or 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 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\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 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 if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\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 (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\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 || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\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 (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\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(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","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","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 11.2.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: March 19, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit, forceActiveIndex) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { 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 getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\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 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\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}\"></${params.bulletElement}>`;\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 = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\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.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\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 { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\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 if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\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.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar 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 { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n image.currentX = newX;\n image.currentY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const prevScale = currentScale;\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') {\n translateX = image.currentX * zoom.scale / prevScale;\n translateY = image.currentY * zoom.scale / prevScale;\n } else {\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n }\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n image.currentX = translateX;\n image.currentY = translateY;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.currentX = undefined;\n image.currentY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation 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 || e.detail && e.detail.bySwiperTouchMove) {\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.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\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 if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\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","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n if (thumbsParams.swiper.destroyed) {\n initialized = false;\n return false;\n }\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.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 return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n _loopSwapReset: false,\n watchSlidesProgress: true,\n loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,\n centeredSlides: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/*!\n * Bootstrap config.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/manipulator.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/manipulator', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Config = factory(global.Manipulator, global.Index));\n})(this, (function (Manipulator, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Class definition\n */\n\n class Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = index_js.isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(index_js.isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = index_js.isElement(value) ? 'element' : index_js.toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n }\n\n return Config;\n\n}));\n//# sourceMappingURL=config.js.map\n","/*! version: 1.4.7 */\n/******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 132:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ M: () => (/* binding */ getLanguageString)\n/* harmony export */ });\n/**\n * support for handling langs\n * English & Spanish by default\n * Others need to be setup by client in window.ElectroPrivacyLanguageMap\n */\n\nconst englishMap = __webpack_require__(286);\nconst spanishMap = __webpack_require__(331);\n\nwindow.ElectroPrivacyLanguageMap = {\n ...window.ElectroPrivacyLanguageMap,\n en: englishMap,\n es: spanishMap,\n};\n\n// console.log('languageMap keys', Object.keys(window.ElectroPrivacyLanguageMap));\n\nlet stringMap = window.ElectroPrivacyLanguageMap['en'];\n\n// use html lang attribute to determine strings to use\nconst languageAttribute = document.documentElement.getAttribute('lang');\nif (languageAttribute) {\n if (window.ElectroPrivacyLanguageMap[languageAttribute]) {\n stringMap = window.ElectroPrivacyLanguageMap[languageAttribute];\n } else {\n const language = languageAttribute.split('-')[0];\n if (window.ElectroPrivacyLanguageMap[language]) {\n stringMap = window.ElectroPrivacyLanguageMap[language];\n }\n }\n}\n\nfunction getLanguageString(strName)\n{\n if (stringMap[strName]) {\n return stringMap[strName];\n }\n return strName;\n}\n\n\n/***/ }),\n\n/***/ 478:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _language_support__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(132);\n// / /////////////////////////////////////////////\n// Do Not Share script part two\n// / /////////////////////////////////////////////\n\n\n// Define variables\nlet otDataSubjectId;\nlet dnsUI = false;\n\n// Collection Point Information\nlet url = 'https://privacyportal.onetrust.com/request/v1/consentreceipts';\nlet token =\n '\"eyJhbGciOiJSUzUxMiJ9.eyJvdEp3dFZlcnNpb24iOjEsInByb2Nlc3NJZCI6ImUxNDMwZTBkLWUzNTgtNGQ4NC1hNGViLTVmMjI3OTRmZGQwZCIsInByb2Nlc3NWZXJzaW9uIjoxLCJpYXQiOiIyMDIyLTEyLTA5VDE3OjQxOjAxLjg4IiwibW9jIjoiQVBJIiwicG9saWN5X3VyaSI6bnVsbCwic3ViIjoiRW1haWwiLCJpc3MiOm51bGwsInRlbmFudElkIjoiNjVjYTZiNDYtNzBiMS00ZWUxLTkwNzQtN2E2M2U4MDBlYTRjIiwiZGVzY3JpcHRpb24iOiJFbmRwb2ludCBmb3Igd2ViIG1vZGFscyIsImNvbnNlbnRUeXBlIjoiQ09ORElUSU9OQUxUUklHR0VSIiwiYWxsb3dOb3RHaXZlbkNvbnNlbnRzIjpmYWxzZSwiZG91YmxlT3B0SW4iOmZhbHNlLCJwdXJwb3NlcyI6W3siaWQiOiI1MjhkZTE1MC1iNWYzLTQ2N2QtYmUxMS03NTc3NTY2MDEyMjQiLCJ2ZXJzaW9uIjoxLCJwYXJlbnRJZCI6bnVsbCwidG9waWNzIjpbXSwiY3VzdG9tUHJlZmVyZW5jZXMiOltdLCJlbmFibGVHZW9sb2NhdGlvbiI6ZmFsc2V9XSwibm90aWNlcyI6W10sImRzRGF0YUVsZW1lbnRzIjpbXSwiYXV0aGVudGljYXRpb25SZXF1aXJlZCI6ZmFsc2UsInJlY29uZmlybUFjdGl2ZVB1cnBvc2UiOmZhbHNlLCJvdmVycmlkZUFjdGl2ZVB1cnBvc2UiOnRydWUsImR5bmFtaWNDb2xsZWN0aW9uUG9pbnQiOmZhbHNlLCJhZGRpdGlvbmFsSWRlbnRpZmllcnMiOltdLCJtdWx0aXBsZUlkZW50aWZpZXJUeXBlcyI6ZmFsc2UsImVuYWJsZVBhcmVudFByaW1hcnlJZGVudGlmaWVycyI6ZmFsc2UsInBhcmVudFByaW1hcnlJZGVudGlmaWVyc1R5cGUiOm51bGwsImFkZGl0aW9uYWxQYXJlbnRJZGVudGlmaWVyVHlwZXMiOltdLCJlbmFibGVHZW9sb2NhdGlvbiI6ZmFsc2V9.g2zafM0cd3qCeVZEXR1AzZfFL6n277n8xPRxGaIUi5oIRoyeDH5ESKvbXT1b4wN1pVzTXZJIl2TKXfHOxzhszfA7oX0gUoYsV6xw_GQIUkF4m8Qly_Pv8r_A0XK4QgvH5iCKcfTmNxOBXRF8vcPj8kT5Rh8G7RsuR6o1rfWBg4IaLPfG3ip7xMo8p2Z4elL3hcTi8dsEJkdSbxyugVOyqydo7Djibq5AtX4l4tI5cWRlf1eG5F1Gr9yBcCzeHl3O-mPx3j344PGgz-AYixQpWhztFUJa13NaD4gycCqNiDbeHqQ16U-696E8lM7uUJ3921qDQQoSAqV6uDnELYHuCi27VDYM8RCzaq9zloWs8G5bSRPSbHIP-YvJUKdHrzjT8_B7ZDBG1efnqMcrqMrQHErG2yDVD_DhlDBLwpokkWpmt3ryYvn9jd4Tk615J73Mxpxu2NpaXnuaothZSXRXIxL7BYUP-PS5y2edp18SKS7eXOWrU0ahEPXKKWhIfXVE7t_PSER8ZO-E-8oLtzMHfbK2bRIS44N37yUGEpmd8Th6ovZiQvTtxBkC0dJbd0FGM4su7NRXyoNY_8dHbXGc9GC1M9P54Ke4pyFfVKrcD4spavrSj2wxiqToTPFpaeFxK8XJn9xENM3_ATJhGpW19CayJm2sesiqaambsymutsk\"';\nlet preferences = '\"purposes\": [{\"Id\": \"528de150-b5f3-467d-be11-757756601224\",\"TransactionType\": \"WITHDRAWN\"}]';\n\nif (window.electroPrivacyStaging || isNonProduction()) {\n url = ' https://privacyportaluat.onetrust.com/request/v1/consentreceipts';\n token =\n '\"eyJhbGciOiJSUzUxMiJ9.eyJvdEp3dFZlcnNpb24iOjEsInByb2Nlc3NJZCI6IjBkZjc2NTAwLWRmNWEtNGQzMC1hOTFhLWFjZmMyMzAyZTFhNyIsInByb2Nlc3NWZXJzaW9uIjoxLCJpYXQiOiIyMDIyLTA5LTI2VDAzOjMyOjIxLjE2NyIsIm1vYyI6IkFQSSIsInBvbGljeV91cmkiOm51bGwsInN1YiI6IkVtYWlsIiwiaXNzIjpudWxsLCJ0ZW5hbnRJZCI6ImM1NzQ2ZTQzLWQyMjItNGI3ZS04ZjRkLTJiNzkzYjViZmFjZiIsImRlc2NyaXB0aW9uIjoiTi9BIiwiY29uc2VudFR5cGUiOiJDT05ESVRJT05BTFRSSUdHRVIiLCJhbGxvd05vdEdpdmVuQ29uc2VudHMiOmZhbHNlLCJkb3VibGVPcHRJbiI6ZmFsc2UsInB1cnBvc2VzIjpbeyJpZCI6IjljYjc2Yjk0LTY3NjYtNGY1MS04ZjRiLTFmNTE4YWNkZDE2NSIsInZlcnNpb24iOjIsInBhcmVudElkIjpudWxsLCJ0b3BpY3MiOltdLCJjdXN0b21QcmVmZXJlbmNlcyI6W10sImVuYWJsZUdlb2xvY2F0aW9uIjpmYWxzZX1dLCJub3RpY2VzIjpbXSwiZHNEYXRhRWxlbWVudHMiOltdLCJhdXRoZW50aWNhdGlvblJlcXVpcmVkIjpmYWxzZSwicmVjb25maXJtQWN0aXZlUHVycG9zZSI6ZmFsc2UsIm92ZXJyaWRlQWN0aXZlUHVycG9zZSI6dHJ1ZSwiZHluYW1pY0NvbGxlY3Rpb25Qb2ludCI6ZmFsc2UsImFkZGl0aW9uYWxJZGVudGlmaWVycyI6W10sIm11bHRpcGxlSWRlbnRpZmllclR5cGVzIjpmYWxzZSwiZW5hYmxlUGFyZW50UHJpbWFyeUlkZW50aWZpZXJzIjpmYWxzZSwicGFyZW50UHJpbWFyeUlkZW50aWZpZXJzVHlwZSI6bnVsbCwiYWRkaXRpb25hbFBhcmVudElkZW50aWZpZXJUeXBlcyI6W10sImVuYWJsZUdlb2xvY2F0aW9uIjpmYWxzZX0.MsM-CdCqBswZHRwR4N_E-RxcHlu368mLb9hIMUJTZ3U5FJMtdIQGr_AmqR5ik6Bx9RedlEZ87Kq8P9-dvPprz0OlHRPZeq-I56khj-C6lvB348mdM_Zr0V-nsBiX72wv6piNWqDJ6cogQRO_92QXZgjrbZYTHKrN5g2VxXqkJrKTQP9OfbIwfnTuK8W37jeLVcWh5KFVGtSC0Wgq64B1VnzwUpn3OGDmWLPp0rjqbE57kqy6eY6fX4d8mulZUpFH8lEqZ8i-xACXmze8lMBuijN26UI2PY6CL1KKfksNIXa9I4I43NBj5AIiaWDioUaQzAZZrqkxKRJGyY7mYbEcxFji5w8kPSfbMBnoRDHF9djVQdQ-gIcFwD_xn1m6NvgmWqeo-vZABn5s7Kg24nS_2Bb7TKk-b5-mrydpE5jMt85kawRCH7tue4F94Y--84ug64FU0cHafB9Byobw-ZCDQQ7Ua8AZVHIIqxDVzK-QZQSSF3OgBoDfhu1-1cM0yTGFDAkCXC7z1aEg2dTyQkG1jF-JEE2pF-jpDSi9hN9A5BRtG8Wh42E4MEj3Xo97y-8Xdnd0V61WDWaLSgVPUclMYdOyTBp_6_QESXqwEraMP6MGubqV_-Br4lbUVkkggvBARx6k46wPke-0u3NrWwgks627GS1DoO349dlVw2YT-YA\"';\n preferences = '\"purposes\": [{\"Id\": \"9cb76b94-6766-4f51-8f4b-1f518acdd165\",\"TransactionType\": \"WITHDRAWN\"}]';\n}\n\n// check url against known list of non-production environments\nfunction isNonProduction()\n{\n const testList = [\n 'lndo.site',\n 'pantheonsite',\n 'staging',\n 'qa',\n 'dev',\n 'local',\n ];\n const serverName = location.host;\n if (testList.some(testString => serverName.includes(testString))) {\n return true;\n }\n return false;\n}\n\n// Purpose Ids Assigned to Collection Point\n\n// make POST call to hit collection point\nfunction setPreferences(otDataSubjectId) {\n // set above based on production or staging\n // preferences = '\"purposes\":[{\"Id\":' + purpose1 + ',\"TransactionType\": \"OPT_OUT\"}]';\n // preferences = '\"purposes\": [{\"Id\": \"528de150-b5f3-467d-be11-757756601224\",\"TransactionType\": \"WITHDRAWN\"}]';\n\n const body = `{\"identifier\":\"${otDataSubjectId}\",\"requestInformation\":${token},${preferences}}`;\n const xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.send(body);\n //console.log(body);\n}\n\nconst re =\n /^(([^<>\\(\\)\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>\\(\\)\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n// email format validation\nfunction validateEmail(email) {\n return re.test(String(email).toLowerCase());\n}\n\n// if email input is valid, trigger submitPreferences function and disable text input field and submit button\nfunction inputValidation() {\n const emailInputValue = document.getElementById('ot-email').value;\n const textInput = document.getElementById('ot-email');\n\n if (validateEmail(emailInputValue)) {\n // console.log(`email returned valid; emailInputValue = ${emailInputValue}`);\n submitPreferences();\n textInput.disabled = true;\n document.getElementById('ot-dns-submit').disabled = true;\n\n const confirmSubmit =\n '<div id=\"ot-submit-text\" style=\"display: inline; margin-left: 10px !important;\">Successfully Submitted!</div>';\n const otEmailSubmit = document.querySelectorAll('#ot-email-submit #ot-dns-submit')[0];\n otEmailSubmit.insertAdjacentHTML('afterend', confirmSubmit);\n } else {\n //console.log(`function returned false; emailInputValue = ${emailInputValue}`);\n //console.log('invalid email');\n }\n}\n\n// grab email input value and trigger API POST\nfunction submitPreferences() {\n // grab value from email form field\n otDataSubjectId = document.getElementById('ot-email').value;\n\n if (otDataSubjectId === '') {\n console.error('Identifier Not Set');\n }\n // else if(OnetrustActiveGroups === \",,\" && saveButtonClicked === false){\n // console.warn(\"New Preferences Set\")\n // setTimeout(setPreferences,100);\n // }\n else {\n setTimeout(setPreferences(otDataSubjectId), 100);\n }\n}\n\n// when clicking on \"Do Not Share\" footer link:\n// - hide cookie categories BESIDES targeting\n// - show email input DIV\n// - simulate click on Targeting to toggle off (may be removed depending on Clorox decision about UX)\nfunction doNotShareUI() {\n // let stockText = document.getElementById(\"stock-text\");\n const stockText = document.getElementById('ot-pc-desc');\n const dnsText = document.getElementById('dns-custom-text');\n const essentialCat = document.querySelectorAll(\n \"div.ot-cat-item.ot-always-active-group[data-optanongroupid='C0001']\"\n )[0];\n const performanceCat = document.querySelectorAll(\"div.ot-cat-item[data-optanongroupid='C0002']\")[0];\n const functionalCat = document.querySelectorAll(\"div.ot-cat-item[data-optanongroupid='C0003']\")[0];\n const closeBtn = document.getElementById('close-pc-btn-handler');\n const paidMarketingText = document.getElementById('ot-email-text');\n const emailInput = document.getElementById('ot-email-submit');\n const pcCatTitle = document.getElementById('ot-category-title');\n const catDescription = document.getElementById('ot-desc-id-C0004');\n const pcTitle = document.getElementById('ot-pc-title');\n pcTitle.textContent = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Privacy Choices');\n\n stockText.style.display = 'none';\n dnsText.style.display = 'block';\n paidMarketingText.style.display = 'block';\n emailInput.style.display = 'block';\n essentialCat.style.display = 'none';\n performanceCat.style.display = 'none';\n functionalCat.style.display = 'none';\n closeBtn.style.display = 'none';\n pcCatTitle.style.display = 'none';\n catDescription.style.display = 'none';\n\n // make sure On/Off text is displayed properly\n document.querySelectorAll('#ot-group-id-C0004')[0].dispatchEvent(new Event('change'))\n document.getElementById('ot-checkbox-status').style.display = 'position: relative; top: -5px; display: inline-block; margin-left: 5px;';\n\n dnsUI = true;\n}\n\n// reverse everything from doNotShareUI function once clicking of CTA\nfunction hideDnsUI() {\n if (dnsUI) {\n // let stockText = document.getElementById(\"stock-text\");\n const stockText = document.getElementById('ot-pc-desc');\n const dnsText = document.getElementById('dns-custom-text');\n const essentialCat = document.querySelectorAll(\n \"div.ot-cat-item.ot-always-active-group[data-optanongroupid='C0001']\"\n )[0];\n const performanceCat = document.querySelectorAll(\"div.ot-cat-item[data-optanongroupid='C0002']\")[0];\n const functionalCat = document.querySelectorAll(\"div.ot-cat-item[data-optanongroupid='C0003']\")[0];\n const closeBtn = document.getElementById('close-pc-btn-handler');\n const paidMarketingText = document.getElementById('ot-email-text');\n const emailInput = document.getElementById('ot-email-submit');\n const pcCatTitle = document.getElementById('ot-category-title');\n const catDescription = document.getElementById('ot-desc-id-C0004');\n const pcTitle = document.getElementById('ot-pc-title');\n\n const toggleTextContainer = document.getElementById('ot-checkbox-status');\n toggleTextContainer.style.display = 'none';\n\n pcTitle.style.textAlign = 'center';\n stockText.style.display = 'block';\n dnsText.style.display = 'none';\n paidMarketingText.style.display = 'none';\n emailInput.style.display = 'none';\n essentialCat.style.display = 'block';\n performanceCat.style.display = 'block';\n functionalCat.style.display = 'block';\n closeBtn.style.display = 'block';\n pcCatTitle.style.display = 'block';\n catDescription.style.display = 'block';\n }\n\n dnsUI = false;\n}\n\n// adding click event listeners to email submit button in DNS UI and CTAs\nlet domCheckInterval = setInterval(dnsCheck, 100);\nfunction dnsCheck() {\n if (document.getElementById('do-not-share') != null) {\n // add pattern to email input\n document.getElementById('ot-email').pattern = re;\n document.getElementById('ot-email').setCustomValidity((0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Please enter a valid email.'));\n\n document.getElementById('ot-dns-submit').addEventListener('click', inputValidation);\n\n // add handling for buttons being recreated (dtc shop)\n document.addEventListener('click', function(e) {\n const sdkButton = document.getElementById('ot-sdk-btn');\n const dnsButton = document.getElementById('do-not-share');\n if (e.target && e.target.id === 'ot-sdk-btn' || sdkButton && sdkButton.contains(e.target)) {\n hideDnsUI();\n } else if (e.target && e.target.id === 'do-not-share' || dnsButton && dnsButton.contains(e.target)) {\n doNotShareUI();\n }\n }, {\n capture: true\n })\n\n /*\n document.getElementById('do-not-share').addEventListener('click', doNotShareUI);\n document.getElementById('ot-sdk-btn').addEventListener('click', hideDnsUI);\n */\n\n // ot banner link\n if (document.getElementById('onetrust-pc-btn-handler')) {\n document.getElementById('onetrust-pc-btn-handler').addEventListener('click', hideDnsUI);\n }\n\n // ESC key handling to close\n // Needed with onetrust-banner-sdk changes in\n // v202304.1.0 - which can remove keyboard handler when cookies popup closes\n document.addEventListener('keydown', function(e) {\n if ('Escape' === e.code) {\n // click dialog close button\n const close = document.getElementById('close-pc-btn-handler');\n if (close) {\n close.click();\n }\n }\n });\n\n // listen for styled checkbox state\n document.querySelectorAll('#ot-group-id-C0004')[0].addEventListener('change', function () {\n document.getElementById('ot-checkbox-status').textContent = this.checked ? (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('On') : (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Off');\n });\n\n clearInterval(domCheckInterval);\n domCheckInterval = null;\n }\n}\n\n\n/***/ }),\n\n/***/ 286:\n/***/ ((module) => {\n\nmodule.exports = /*#__PURE__*/JSON.parse('{\"emailTextBlock\":\"You may have previously provided your email address to us. In some cases, we may use email addresses or other non-cookie personal information to deliver behavioral advertising to consumers via third parties such as Amazon, Facebook, Google, Omnicom, and Walmart. To request that your personal information is not shared for these purposes, please enter your email address below:\",\"deletionTextBlock1\":\"If you are a U.S. consumer and would like to submit other privacy requests, please visit our <a target=\\\\\"_blank\\\\\" href=\\\\\"//privacyportal.onetrust.com/webform/65ca6b46-70b1-4ee1-9074-7a63e800ea4c/7baf0e2e-4724-44fe-af48-4138faca9d23\\\\\">U.S. Data Subject Request</a> page.\",\"deletionTextBlock2\":\"For more information about additional privacy practices and choices available to you, please visit our <a target=\\\\\"_blank\\\\\" href=\\\\\"//thecloroxcompany.com/privacy/\\\\\">Privacy Policy</a>.\",\"targetedAdsTextBlock\":\"Under some state laws you have the right to opt out of the selling or sharing of your information for cross-context behavioral advertising and/or certain types of targeted advertising (“behavioral advertisingâ€).<br><br>To turn off the behavioral advertising cookies and trackers on this website, toggle “Targeting / Advertising Cookies†to “off†and click “Save Settings.†If the toggle is already set to “off†- you may have already updated your cookie settings, or the Global Privacy Control (“GPCâ€) signal may be enabled in your browser.<br><br>In most cases, your opt-out preference will be tracked via a cookie, which means your selection is limited to the specific device and browser you are using during this visit to our website. If you visit this website from a different device or browser, change your browser settings, or if you clear your cookies, you may need to opt out again.<br><br>If you would like to update other cookie-related preferences visit the \\\\\"Cookie Settings\\\\\" link in the footer of this webpage.<br /><br />Additionally, you may have the right to obtain a list of specific third parties (as defined under applicable law) to which we may have disclosed personal information. That information can be found below.\",\"Privacy Choices\":\"Privacy Choices\",\"Please enter a valid email.\":\"Please enter a valid email.\",\"On\":\"On\",\"Off\":\"Off\",\"Behavioral Advertising Linked To Your Email Address:\":\"Behavioral Advertising Linked To Your Email Address:\",\"Email:\":\"Email:\",\"Submit\":\"Submit\",\"Once you have made all of your elections, click “Save Settings†to save your settings and close the window.\":\"Once you have made all of your elections, click “Save Settings†to save your settings and close the window.\",\"Deletion, Access, Or Correction Requests\":\"Deletion, Access, Correction, or Portability Requests\",\"Do Not Sell or Share for Targeted Advertising\":\"Do Not Sell or Share for Targeted Advertising\"}');\n\n/***/ }),\n\n/***/ 331:\n/***/ ((module) => {\n\nmodule.exports = /*#__PURE__*/JSON.parse('{\"emailTextBlock\":\"Es posible que nos haya proporcionado previamente su dirección de correo electrónico. En algunos casos, utilizamos direcciones de correo electrónico u otra información personal que no sea de cookies para entregar publicidad conductual a los consumidores en plataformas de terceros como Amazon, Facebook, Google, Omnicom y Walmart. Para solicitar que su información personal no se comparta para estos fines, ingrese su dirección de correo electrónico a continuación:\",\"deletionTextBlock1\":\"Si usted es un consumidor estadounidense y desea enviar otras solicitudes de privacidad, como una solicitud de eliminación, acceso o corrección, visite nuestra página de <a target=\\\\\"_blank\\\\\" href=\\\\\"//privacyportal.onetrust.com/webform/65ca6b46-70b1-4ee1-9074-7a63e800ea4c/7baf0e2e-4724-44fe-af48-4138faca9d23\\\\\">Solicitud del sujeto de datos de EE. UU.</a>\",\"deletionTextBlock2\":\"Para obtener más información sobre las prácticas de privacidad adicionales y las opciones disponibles para usted, visite nuestra <a target=\\\\\"_blank\\\\\" href=\\\\\"//thecloroxcompany.com/privacy/es-privacy/\\\\\">PolÃtica de privacidad.</a>\",\"targetedAdsTextBlock\":\"En virtud de algunas leyes estatales, usted tiene derecho a excluirse de la venta o el intercambio de su información para publicidad conductual entre contextos y/o ciertos tipos de publicidad dirigida (“publicidad conductualâ€).<br><br>Para desactivar las cookies de publicidad conductual y los rastreadores en este sitio web, cambie “Cookies de publicidad/dirigidas†a “desactivado†y haga clic en “Guardar configuraciónâ€. Si el conmutador ya está configurado en “desactivadoâ€, es posible que ya haya actualizado su configuración de cookies o que la señal de Control de Privacidad Global (Global Privacy Control, “GPCâ€) esté habilitada en su navegador.<br><br>En la mayorÃa de los casos, se hará un seguimiento de su preferencia de exclusión mediante una cookie, lo que significa que su selección se limita al dispositivo y navegador especÃficos que está utilizando durante esta visita a nuestro sitio web. Si visita este sitio web desde un dispositivo o navegador diferente, cambia la configuración de su navegador o si borra sus cookies, es posible que deba excluirse nuevamente.<br><br>Si desea actualizar otras preferencias relacionadas con cookies, visite el enlace \\\\\"Configuración de cookies\\\\\" en el pie de página de esta página web.<br /><br />Adicionalmente, es posible que tenga derecho a obtener una lista de terceros especÃficos (según se define en la ley aplicable) a los que pudimos haber revelado información personal. Esa información se puede encontrar a continuación.\",\"Privacy Choices\":\"Sus opciones de privacidad\",\"Please enter a valid email.\":\"Ingrese un correo electrónico válido\",\"On\":\"Habilitadas\",\"Off\":\"Deshabilitadas\",\"Behavioral Advertising Linked To Your Email Address:\":\"Publicidad conductual vinculada a su dirección de correo electrónico:\",\"Email:\":\"Correo electrónico:\",\"Submit\":\"Enviar\",\"Once you have made all of your elections, click “Save Settings†to save your settings and close the window.\":\"Una vez que haya realizado todas sus elecciones, haga clic en “Guardar configuración†para guardar su configuración y cerrar la ventana.\",\"Deletion, Access, Or Correction Requests\":\"Solicitudes de eliminación, acceso o corrección o portabilidad\",\"Do Not Sell or Share for Targeted Advertising\":\"No vender ni compartir para publicidad dirigida\"}');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n/* harmony import */ var _language_support__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(132);\n// load language support & determine lang based on url\n\n\n\nlet dsIdSet = false;\nasync function OptanonWrapperLocal() {\n window.dataLayer.push({\n event: 'OneTrustGroupsUpdated',\n OneTrustActiveGroups: window.OnetrustActiveGroups,\n });\n\n if (dsIdSet == false) {\n const emailTitle = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Behavioral Advertising Linked To Your Email Address:');\n const emailBlock = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('emailTextBlock');\n const emailLabel = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Email:');\n const submit = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Submit');\n const emailInstructions = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Once you have made all of your elections, click “Save Settings†to save your settings and close the window.');\n const deletionRequests = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Deletion, Access, Or Correction Requests');\n const deletionTextBlock1 = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('deletionTextBlock1');\n const deletionTextBlock2 = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('deletionTextBlock2');\n\n const otEmailHTML = `\n <hr/>\n <div id=\"ot-email-text\" style=\"padding-top: 20px; display: none\">\n <h3 style=\"font-size: 15px !important;\">${emailTitle}</h3>\n <br/>\n <p>${emailBlock}</p>\n <form id=\"ot-email-submit\" style=\"padding-top: 20px;\" onsubmit=\"return false;\">\n <label for=\"ot-email\">${emailLabel}\n <input type=\"email\" style=\"border: 1px solid #000 !important;\" id=\"ot-email\" name=\"ot-email\" required>\n <input type=\"submit\" style=\"border-radius: 4px; padding: 7px; border: 1px solid #000 !important;\" id=\"ot-dns-submit\" value=\"${submit}\">\n </label>\n </form>\n <br/>\n <p>${emailInstructions}</p>\n <br/><br/>\n <hr />\n <h3 style=\"padding-top: 20px; font-size: 15px !important;\">${deletionRequests}</h3>\n <br />\n <p>${deletionTextBlock1}</p>\n <br />\n <p>${deletionTextBlock2}</p>\n </div>\n `;\n\n const targetedAdsTitle = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('Do Not Sell or Share for Targeted Advertising');\n const targetedAdsTextBlock = (0,_language_support__WEBPACK_IMPORTED_MODULE_0__/* .getLanguageString */ .M)('targetedAdsTextBlock');\n\n const dnsCustomText = `\n <div id=\"dns-custom-text\" style=\"display: none\">\n <h3 style=\"padding-top: 20px; font-size: 15px !important;\">${targetedAdsTitle}</h3>\n <br />\n <p>${targetedAdsTextBlock}</p>\n </div>\n `;\n\n const otEmailForm = document.querySelectorAll('.ot-sdk-row.ot-cat-grp')[0];\n otEmailForm.insertAdjacentHTML('afterend', otEmailHTML);\n\n const otDnsText = document.getElementById('ot-pc-desc');\n otDnsText.insertAdjacentHTML('afterend', dnsCustomText);\n\n // show \"on/off\" text near the toggle\n const toggleTextContainer = document.createElement('div');\n toggleTextContainer.setAttribute('id', 'ot-checkbox-status');\n toggleTextContainer.setAttribute('style', 'position: relative; top: -5px; display: inline-block; margin-left: 5px;');\n const insertAfterThis = document.querySelectorAll('[data-optanongroupid=\"C0004\"]')[0];\n const toggleContainer = insertAfterThis.querySelector('.ot-tgl');\n toggleContainer.appendChild(toggleTextContainer);\n\n dsIdSet = true;\n\n // import 2nd js file\n await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 478));\n }\n}\n\n\n\n\n// removed global callback from ot library\n\n// wait for needed elements to be created in document\n// then do this init\nfunction checkBeforeInit() {\n if (document.querySelectorAll('.ot-sdk-row.ot-cat-grp').length && document.getElementById('ot-pc-desc')) {\n OptanonWrapperLocal();\n } else {\n setTimeout(checkBeforeInit, 100);\n }\n}\nsetTimeout(checkBeforeInit, 100);\n\n/******/ })()\n;","/*!\r\n * jQuery & Zepto Lazy - v1.7.10\r\n * http://jquery.eisbehr.de/lazy/\r\n *\r\n * Copyright 2012 - 2018, Daniel 'Eisbehr' Kern\r\n *\r\n * Dual licensed under the MIT and GPL-2.0 licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl-2.0.html\r\n *\r\n * $(\"img.lazy\").lazy();\r\n */\r\n\r\n;(function(window, undefined) {\r\n \"use strict\";\r\n\r\n // noinspection JSUnresolvedVariable\r\n /**\r\n * library instance - here and not in construct to be shorter in minimization\r\n * @return void\r\n */\r\n var $ = window.jQuery || window.Zepto,\r\n\r\n /**\r\n * unique plugin instance id counter\r\n * @type {number}\r\n */\r\n lazyInstanceId = 0,\r\n\r\n /**\r\n * helper to register window load for jQuery 3\r\n * @type {boolean}\r\n */ \r\n windowLoaded = false;\r\n\r\n /**\r\n * make lazy available to jquery - and make it a bit more case-insensitive :)\r\n * @access public\r\n * @type {function}\r\n * @param {object} settings\r\n * @return {LazyPlugin}\r\n */\r\n $.fn.Lazy = $.fn.lazy = function(settings) {\r\n return new LazyPlugin(this, settings);\r\n };\r\n\r\n /**\r\n * helper to add plugins to lazy prototype configuration\r\n * @access public\r\n * @type {function}\r\n * @param {string|Array} names\r\n * @param {string|Array|function} [elements]\r\n * @param {function} loader\r\n * @return void\r\n */\r\n $.Lazy = $.lazy = function(names, elements, loader) {\r\n // make second parameter optional\r\n if ($.isFunction(elements)) {\r\n loader = elements;\r\n elements = [];\r\n }\r\n\r\n // exit here if parameter is not a callable function\r\n if (!$.isFunction(loader)) {\r\n return;\r\n }\r\n\r\n // make parameters an array of names to be sure\r\n names = $.isArray(names) ? names : [names];\r\n elements = $.isArray(elements) ? elements : [elements];\r\n\r\n var config = LazyPlugin.prototype.config,\r\n forced = config._f || (config._f = {});\r\n\r\n // add the loader plugin for every name\r\n for (var i = 0, l = names.length; i < l; i++) {\r\n if (config[names[i]] === undefined || $.isFunction(config[names[i]])) {\r\n config[names[i]] = loader;\r\n }\r\n }\r\n\r\n // add forced elements loader\r\n for (var c = 0, a = elements.length; c < a; c++) {\r\n forced[elements[c]] = names[0];\r\n }\r\n };\r\n\r\n /**\r\n * contains all logic and the whole element handling\r\n * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance\r\n * @access private\r\n * @type {function}\r\n * @param {LazyPlugin} instance\r\n * @param {object} config\r\n * @param {object|Array} items\r\n * @param {object} events\r\n * @param {string} namespace\r\n * @return void\r\n */\r\n function _executeLazy(instance, config, items, events, namespace) {\r\n /**\r\n * a helper to trigger the 'onFinishedAll' callback after all other events\r\n * @access private\r\n * @type {number}\r\n */\r\n var _awaitingAfterLoad = 0,\r\n\r\n /**\r\n * visible content width\r\n * @access private\r\n * @type {number}\r\n */\r\n _actualWidth = -1,\r\n\r\n /**\r\n * visible content height\r\n * @access private\r\n * @type {number}\r\n */\r\n _actualHeight = -1,\r\n\r\n /**\r\n * determine possibly detected high pixel density\r\n * @access private\r\n * @type {boolean}\r\n */\r\n _isRetinaDisplay = false, \r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _afterLoad = 'afterLoad',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _load = 'load',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _error = 'error',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _img = 'img',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _src = 'src',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _srcset = 'srcset',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _sizes = 'sizes',\r\n\r\n /**\r\n * dictionary entry for better minimization\r\n * @access private\r\n * @type {string}\r\n */\r\n _backgroundImage = 'background-image';\r\n\r\n /**\r\n * initialize plugin\r\n * bind loading to events or set delay time to load all items at once\r\n * @access private\r\n * @return void\r\n */\r\n function _initialize() {\r\n // detect actual device pixel ratio\r\n // noinspection JSUnresolvedVariable\r\n _isRetinaDisplay = window.devicePixelRatio > 1;\r\n\r\n // prepare all initial items\r\n items = _prepareItems(items);\r\n\r\n // if delay time is set load all items at once after delay time\r\n if (config.delay >= 0) {\r\n setTimeout(function() {\r\n _lazyLoadItems(true);\r\n }, config.delay);\r\n }\r\n\r\n // if no delay is set or combine usage is active bind events\r\n if (config.delay < 0 || config.combined) {\r\n // create unique event function\r\n events.e = _throttle(config.throttle, function(event) {\r\n // reset detected window size on resize event\r\n if (event.type === 'resize') {\r\n _actualWidth = _actualHeight = -1;\r\n }\r\n\r\n // execute 'lazy magic'\r\n _lazyLoadItems(event.all);\r\n });\r\n\r\n // create function to add new items to instance\r\n events.a = function(additionalItems) {\r\n additionalItems = _prepareItems(additionalItems);\r\n items.push.apply(items, additionalItems);\r\n };\r\n\r\n // create function to get all instance items left\r\n events.g = function() {\r\n // filter loaded items before return in case internal filter was not running until now\r\n return (items = $(items).filter(function() {\r\n return !$(this).data(config.loadedName);\r\n }));\r\n };\r\n\r\n // create function to force loading elements\r\n events.f = function(forcedItems) {\r\n for (var i = 0; i < forcedItems.length; i++) {\r\n // only handle item if available in current instance\r\n // use a compare function, because Zepto can't handle object parameter for filter\r\n // var item = items.filter(forcedItems[i]);\r\n /* jshint loopfunc: true */\r\n var item = items.filter(function() {\r\n return this === forcedItems[i];\r\n });\r\n\r\n if (item.length) {\r\n _lazyLoadItems(false, item); \r\n }\r\n }\r\n };\r\n\r\n // load initial items\r\n _lazyLoadItems();\r\n\r\n // bind lazy load functions to scroll and resize event\r\n // noinspection JSUnresolvedVariable\r\n $(config.appendScroll).on('scroll.' + namespace + ' resize.' + namespace, events.e);\r\n }\r\n }\r\n\r\n /**\r\n * prepare items before handle them\r\n * @access private\r\n * @param {Array|object|jQuery} items\r\n * @return {Array|object|jQuery}\r\n */\r\n function _prepareItems(items) {\r\n // fetch used configurations before loops\r\n var defaultImage = config.defaultImage,\r\n placeholder = config.placeholder,\r\n imageBase = config.imageBase,\r\n srcsetAttribute = config.srcsetAttribute,\r\n loaderAttribute = config.loaderAttribute,\r\n forcedTags = config._f || {};\r\n\r\n // filter items and only add those who not handled yet and got needed attributes available\r\n items = $(items).filter(function() {\r\n var element = $(this),\r\n tag = _getElementTagName(this);\r\n\r\n return !element.data(config.handledName) && \r\n (element.attr(config.attribute) || element.attr(srcsetAttribute) || element.attr(loaderAttribute) || forcedTags[tag] !== undefined);\r\n })\r\n\r\n // append plugin instance to all elements\r\n .data('plugin_' + config.name, instance);\r\n\r\n for (var i = 0, l = items.length; i < l; i++) {\r\n var element = $(items[i]),\r\n tag = _getElementTagName(items[i]),\r\n elementImageBase = element.attr(config.imageBaseAttribute) || imageBase;\r\n\r\n // generate and update source set if an image base is set\r\n if (tag === _img && elementImageBase && element.attr(srcsetAttribute)) {\r\n element.attr(srcsetAttribute, _getCorrectedSrcSet(element.attr(srcsetAttribute), elementImageBase));\r\n }\r\n\r\n // add loader to forced element types\r\n if (forcedTags[tag] !== undefined && !element.attr(loaderAttribute)) {\r\n element.attr(loaderAttribute, forcedTags[tag]);\r\n }\r\n\r\n // set default image on every element without source\r\n if (tag === _img && defaultImage && !element.attr(_src)) {\r\n element.attr(_src, defaultImage);\r\n }\r\n\r\n // set placeholder on every element without background image\r\n else if (tag !== _img && placeholder && (!element.css(_backgroundImage) || element.css(_backgroundImage) === 'none')) {\r\n element.css(_backgroundImage, \"url('\" + placeholder + \"')\");\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * the 'lazy magic' - check all items\r\n * @access private\r\n * @param {boolean} [allItems]\r\n * @param {object} [forced]\r\n * @return void\r\n */\r\n function _lazyLoadItems(allItems, forced) {\r\n // skip if no items where left\r\n if (!items.length) {\r\n // destroy instance if option is enabled\r\n if (config.autoDestroy) {\r\n // noinspection JSUnresolvedFunction\r\n instance.destroy();\r\n }\r\n\r\n return;\r\n }\r\n\r\n var elements = forced || items,\r\n loadTriggered = false,\r\n imageBase = config.imageBase || '',\r\n srcsetAttribute = config.srcsetAttribute,\r\n handledName = config.handledName;\r\n\r\n // loop all available items\r\n for (var i = 0; i < elements.length; i++) {\r\n // item is at least in loadable area\r\n if (allItems || forced || _isInLoadableArea(elements[i])) {\r\n var element = $(elements[i]),\r\n tag = _getElementTagName(elements[i]),\r\n attribute = element.attr(config.attribute),\r\n elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,\r\n customLoader = element.attr(config.loaderAttribute);\r\n\r\n // is not already handled \r\n if (!element.data(handledName) &&\r\n // and is visible or visibility doesn't matter\r\n (!config.visibleOnly || element.is(':visible')) && (\r\n // and image source or source set attribute is available\r\n (attribute || element.attr(srcsetAttribute)) && (\r\n // and is image tag where attribute is not equal source or source set\r\n (tag === _img && (elementImageBase + attribute !== element.attr(_src) || element.attr(srcsetAttribute) !== element.attr(_srcset))) ||\r\n // or is non image tag where attribute is not equal background\r\n (tag !== _img && elementImageBase + attribute !== element.css(_backgroundImage))\r\n ) ||\r\n // or custom loader is available\r\n customLoader))\r\n {\r\n // mark element always as handled as this point to prevent double handling\r\n loadTriggered = true;\r\n element.data(handledName, true);\r\n\r\n // load item\r\n _handleItem(element, tag, elementImageBase, customLoader);\r\n }\r\n }\r\n }\r\n\r\n // when something was loaded remove them from remaining items\r\n if (loadTriggered) {\r\n items = $(items).filter(function() {\r\n return !$(this).data(handledName);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * load the given element the lazy way\r\n * @access private\r\n * @param {object} element\r\n * @param {string} tag\r\n * @param {string} imageBase\r\n * @param {function} [customLoader]\r\n * @return void\r\n */\r\n function _handleItem(element, tag, imageBase, customLoader) {\r\n // increment count of items waiting for after load\r\n ++_awaitingAfterLoad;\r\n\r\n // extended error callback for correct 'onFinishedAll' handling\r\n var errorCallback = function() {\r\n _triggerCallback('onError', element);\r\n _reduceAwaiting();\r\n\r\n // prevent further callback calls\r\n errorCallback = $.noop;\r\n };\r\n\r\n // trigger function before loading image\r\n _triggerCallback('beforeLoad', element);\r\n\r\n // fetch all double used data here for better code minimization\r\n var srcAttribute = config.attribute,\r\n srcsetAttribute = config.srcsetAttribute,\r\n sizesAttribute = config.sizesAttribute,\r\n retinaAttribute = config.retinaAttribute,\r\n removeAttribute = config.removeAttribute,\r\n loadedName = config.loadedName,\r\n elementRetina = element.attr(retinaAttribute);\r\n\r\n // handle custom loader\r\n if (customLoader) {\r\n // on load callback\r\n var loadCallback = function() {\r\n // remove attribute from element\r\n if (removeAttribute) {\r\n element.removeAttr(config.loaderAttribute);\r\n }\r\n\r\n // mark element as loaded\r\n element.data(loadedName, true);\r\n\r\n // call after load event\r\n _triggerCallback(_afterLoad, element);\r\n\r\n // remove item from waiting queue and possibly trigger finished event\r\n // it's needed to be asynchronous to run after filter was in _lazyLoadItems\r\n setTimeout(_reduceAwaiting, 1);\r\n\r\n // prevent further callback calls\r\n loadCallback = $.noop;\r\n };\r\n\r\n // bind error event to trigger callback and reduce waiting amount\r\n element.off(_error).one(_error, errorCallback)\r\n\r\n // bind after load callback to element\r\n .one(_load, loadCallback);\r\n\r\n // trigger custom loader and handle response\r\n if (!_triggerCallback(customLoader, element, function(response) {\r\n if(response) {\r\n element.off(_load);\r\n loadCallback();\r\n }\r\n else {\r\n element.off(_error);\r\n errorCallback();\r\n }\r\n })) {\r\n element.trigger(_error);\r\n }\r\n }\r\n\r\n // handle images\r\n else {\r\n // create image object\r\n var imageObj = $(new Image());\r\n\r\n // bind error event to trigger callback and reduce waiting amount\r\n imageObj.one(_error, errorCallback)\r\n\r\n // bind after load callback to image\r\n .one(_load, function() {\r\n // remove element from view\r\n element.hide();\r\n\r\n // set image back to element\r\n // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'\r\n if (tag === _img) {\r\n element.attr(_sizes, imageObj.attr(_sizes))\r\n .attr(_srcset, imageObj.attr(_srcset))\r\n .attr(_src, imageObj.attr(_src));\r\n }\r\n else {\r\n element.css(_backgroundImage, \"url('\" + imageObj.attr(_src) + \"')\");\r\n }\r\n\r\n // bring it back with some effect!\r\n element[config.effect](config.effectTime);\r\n\r\n // remove attribute from element\r\n if (removeAttribute) {\r\n element.removeAttr(srcAttribute + ' ' + srcsetAttribute + ' ' + retinaAttribute + ' ' + config.imageBaseAttribute);\r\n\r\n // only remove 'sizes' attribute, if it was a custom one\r\n if (sizesAttribute !== _sizes) {\r\n element.removeAttr(sizesAttribute);\r\n }\r\n }\r\n\r\n // mark element as loaded\r\n element.data(loadedName, true);\r\n\r\n // call after load event\r\n _triggerCallback(_afterLoad, element);\r\n\r\n // cleanup image object\r\n imageObj.remove();\r\n\r\n // remove item from waiting queue and possibly trigger finished event\r\n _reduceAwaiting();\r\n });\r\n\r\n // set sources\r\n // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'\r\n var imageSrc = (_isRetinaDisplay && elementRetina ? elementRetina : element.attr(srcAttribute)) || '';\r\n imageObj.attr(_sizes, element.attr(sizesAttribute))\r\n .attr(_srcset, element.attr(srcsetAttribute))\r\n .attr(_src, imageSrc ? imageBase + imageSrc : null);\r\n\r\n // call after load even on cached image\r\n imageObj.complete && imageObj.trigger(_load); // jshint ignore : line\r\n }\r\n }\r\n\r\n /**\r\n * check if the given element is inside the current viewport or threshold\r\n * @access private\r\n * @param {object} element\r\n * @return {boolean}\r\n */\r\n function _isInLoadableArea(element) {\r\n var elementBound = element.getBoundingClientRect(),\r\n direction = config.scrollDirection,\r\n threshold = config.threshold,\r\n vertical = // check if element is in loadable area from top\r\n ((_getActualHeight() + threshold) > elementBound.top) &&\r\n // check if element is even in loadable are from bottom\r\n (-threshold < elementBound.bottom),\r\n horizontal = // check if element is in loadable area from left\r\n ((_getActualWidth() + threshold) > elementBound.left) &&\r\n // check if element is even in loadable area from right\r\n (-threshold < elementBound.right);\r\n\r\n if (direction === 'vertical') {\r\n return vertical;\r\n }\r\n else if (direction === 'horizontal') {\r\n return horizontal;\r\n }\r\n\r\n return vertical && horizontal;\r\n }\r\n\r\n /**\r\n * receive the current viewed width of the browser\r\n * @access private\r\n * @return {number}\r\n */\r\n function _getActualWidth() {\r\n return _actualWidth >= 0 ? _actualWidth : (_actualWidth = $(window).width());\r\n }\r\n\r\n /**\r\n * receive the current viewed height of the browser\r\n * @access private\r\n * @return {number}\r\n */\r\n function _getActualHeight() {\r\n return _actualHeight >= 0 ? _actualHeight : (_actualHeight = $(window).height());\r\n }\r\n\r\n /**\r\n * get lowercase tag name of an element\r\n * @access private\r\n * @param {object} element\r\n * @returns {string}\r\n */\r\n function _getElementTagName(element) {\r\n return element.tagName.toLowerCase();\r\n }\r\n\r\n /**\r\n * prepend image base to all srcset entries\r\n * @access private\r\n * @param {string} srcset\r\n * @param {string} imageBase\r\n * @returns {string}\r\n */\r\n function _getCorrectedSrcSet(srcset, imageBase) {\r\n if (imageBase) {\r\n // trim, remove unnecessary spaces and split entries\r\n var entries = srcset.split(',');\r\n srcset = '';\r\n\r\n for (var i = 0, l = entries.length; i < l; i++) {\r\n srcset += imageBase + entries[i].trim() + (i !== l - 1 ? ',' : '');\r\n }\r\n }\r\n\r\n return srcset;\r\n }\r\n\r\n /**\r\n * helper function to throttle down event triggering\r\n * @access private\r\n * @param {number} delay\r\n * @param {function} callback\r\n * @return {function}\r\n */\r\n function _throttle(delay, callback) {\r\n var timeout,\r\n lastExecute = 0;\r\n\r\n return function(event, ignoreThrottle) {\r\n var elapsed = +new Date() - lastExecute;\r\n\r\n function run() {\r\n lastExecute = +new Date();\r\n // noinspection JSUnresolvedFunction\r\n callback.call(instance, event);\r\n }\r\n\r\n timeout && clearTimeout(timeout); // jshint ignore : line\r\n\r\n if (elapsed > delay || !config.enableThrottle || ignoreThrottle) {\r\n run();\r\n }\r\n else {\r\n timeout = setTimeout(run, delay - elapsed);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero\r\n * @access private\r\n * @return void\r\n */\r\n function _reduceAwaiting() {\r\n --_awaitingAfterLoad;\r\n\r\n // if no items were left trigger finished event\r\n if (!items.length && !_awaitingAfterLoad) {\r\n _triggerCallback('onFinishedAll');\r\n }\r\n }\r\n\r\n /**\r\n * single implementation to handle callbacks, pass element and set 'this' to current instance\r\n * @access private\r\n * @param {string|function} callback\r\n * @param {object} [element]\r\n * @param {*} [args]\r\n * @return {boolean}\r\n */\r\n function _triggerCallback(callback, element, args) {\r\n if ((callback = config[callback])) {\r\n // jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads\r\n // below is shorthand of 'Array.prototype.slice.call(arguments, 1)'\r\n callback.apply(instance, [].slice.call(arguments, 1));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // if event driven or window is already loaded don't wait for page loading\r\n if (config.bind === 'event' || windowLoaded) {\r\n _initialize();\r\n }\r\n\r\n // otherwise load initial items and start lazy after page load\r\n else {\r\n // noinspection JSUnresolvedVariable\r\n $(window).on(_load + '.' + namespace, _initialize);\r\n } \r\n }\r\n\r\n /**\r\n * lazy plugin class constructor\r\n * @constructor\r\n * @access private\r\n * @param {object} elements\r\n * @param {object} settings\r\n * @return {object|LazyPlugin}\r\n */\r\n function LazyPlugin(elements, settings) {\r\n /**\r\n * this lazy plugin instance\r\n * @access private\r\n * @type {object|LazyPlugin|LazyPlugin.prototype}\r\n */\r\n var _instance = this,\r\n\r\n /**\r\n * this lazy plugin instance configuration\r\n * @access private\r\n * @type {object}\r\n */\r\n _config = $.extend({}, _instance.config, settings),\r\n\r\n /**\r\n * instance generated event executed on container scroll or resize\r\n * packed in an object to be referenceable and short named because properties will not be minified\r\n * @access private\r\n * @type {object}\r\n */\r\n _events = {},\r\n\r\n /**\r\n * unique namespace for instance related events\r\n * @access private\r\n * @type {string}\r\n */\r\n _namespace = _config.name + '-' + (++lazyInstanceId);\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * wrapper to get or set an entry from plugin instance configuration\r\n * much smaller on minify as direct access\r\n * @access public\r\n * @type {function}\r\n * @param {string} entryName\r\n * @param {*} [value]\r\n * @return {LazyPlugin|*}\r\n */\r\n _instance.config = function(entryName, value) {\r\n if (value === undefined) {\r\n return _config[entryName];\r\n }\r\n\r\n _config[entryName] = value;\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * add additional items to current instance\r\n * @access public\r\n * @param {Array|object|string} items\r\n * @return {LazyPlugin}\r\n */\r\n _instance.addItems = function(items) {\r\n _events.a && _events.a($.type(items) === 'string' ? $(items) : items); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * get all left items of this instance\r\n * @access public\r\n * @returns {object}\r\n */\r\n _instance.getItems = function() {\r\n return _events.g ? _events.g() : {};\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force lazy to load all items in loadable area right now\r\n * by default without throttle\r\n * @access public\r\n * @type {function}\r\n * @param {boolean} [useThrottle]\r\n * @return {LazyPlugin}\r\n */\r\n _instance.update = function(useThrottle) {\r\n _events.e && _events.e({}, !useThrottle); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force element(s) to load directly, ignoring the viewport\r\n * @access public\r\n * @param {Array|object|string} items\r\n * @return {LazyPlugin}\r\n */\r\n _instance.force = function(items) {\r\n _events.f && _events.f($.type(items) === 'string' ? $(items) : items); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * force lazy to load all available items right now\r\n * this call ignores throttling\r\n * @access public\r\n * @type {function}\r\n * @return {LazyPlugin}\r\n */\r\n _instance.loadAll = function() {\r\n _events.e && _events.e({all: true}, true); // jshint ignore : line\r\n return _instance;\r\n };\r\n\r\n // noinspection JSUndefinedPropertyAssignment\r\n /**\r\n * destroy this plugin instance\r\n * @access public\r\n * @type {function}\r\n * @return undefined\r\n */\r\n _instance.destroy = function() {\r\n // unbind instance generated events\r\n // noinspection JSUnresolvedFunction, JSUnresolvedVariable\r\n $(_config.appendScroll).off('.' + _namespace, _events.e);\r\n // noinspection JSUnresolvedVariable\r\n $(window).off('.' + _namespace);\r\n\r\n // clear events\r\n _events = {};\r\n\r\n return undefined;\r\n };\r\n\r\n // start using lazy and return all elements to be chainable or instance for further use\r\n // noinspection JSUnresolvedVariable\r\n _executeLazy(_instance, _config, elements, _events, _namespace);\r\n return _config.chainable ? elements : _instance;\r\n }\r\n\r\n /**\r\n * settings and configuration data\r\n * @access public\r\n * @type {object|*}\r\n */\r\n LazyPlugin.prototype.config = {\r\n // general\r\n name : 'lazy',\r\n chainable : true,\r\n autoDestroy : true,\r\n bind : 'load',\r\n threshold : 500,\r\n visibleOnly : false,\r\n appendScroll : window,\r\n scrollDirection : 'both',\r\n imageBase : null,\r\n defaultImage : 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',\r\n placeholder : null,\r\n delay : -1,\r\n combined : false,\r\n\r\n // attributes\r\n attribute : 'data-src',\r\n srcsetAttribute : 'data-srcset',\r\n sizesAttribute : 'data-sizes',\r\n retinaAttribute : 'data-retina',\r\n loaderAttribute : 'data-loader',\r\n imageBaseAttribute : 'data-imagebase',\r\n removeAttribute : true,\r\n handledName : 'handled',\r\n loadedName : 'loaded',\r\n\r\n // effect\r\n effect : 'show',\r\n effectTime : 0,\r\n\r\n // throttle\r\n enableThrottle : true,\r\n throttle : 250,\r\n\r\n // callbacks\r\n beforeLoad : undefined,\r\n afterLoad : undefined,\r\n onError : undefined,\r\n onFinishedAll : undefined\r\n };\r\n\r\n // register window load event globally to prevent not loading elements\r\n // since jQuery 3.X ready state is fully async and may be executed after 'load' \r\n $(window).on('load', function() {\r\n windowLoaded = true;\r\n });\r\n})(window);","/*!\n * Bootstrap data.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * Constants\n */\n\n const elementMap = new Map();\n const data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n };\n\n return data;\n\n}));\n//# sourceMappingURL=data.js.map\n","/*!\n * Bootstrap manipulator.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());\n})(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n function normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n }\n function normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n }\n const Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n };\n\n return Manipulator;\n\n}));\n//# sourceMappingURL=manipulator.js.map\n","/*!\n* Parsley.js\n* Version 2.9.2 - built Tue, Dec 10th 2019, 6:18 pm\n* http://parsleyjs.org\n* Guillaume Potier - <guillaume@wisembly.com>\n* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>\n* MIT Licensed\n*/\n\n// The source code below is generated by babel as\n// Parsley is written in ECMAScript 6\n//\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = global || self, global.parsley = factory(global.jQuery));\n}(this, (function ($) { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n var globalID = 1;\n var pastWarnings = {};\n var Utils = {\n // Parsley DOM-API\n // returns object from dom attributes and values\n attr: function attr(element, namespace, obj) {\n var i;\n var attribute;\n var attributes;\n var regex = new RegExp('^' + namespace, 'i');\n if ('undefined' === typeof obj) obj = {};else {\n // Clear all own properties. This won't affect prototype's values\n for (i in obj) {\n if (obj.hasOwnProperty(i)) delete obj[i];\n }\n }\n if (!element) return obj;\n attributes = element.attributes;\n\n for (i = attributes.length; i--;) {\n attribute = attributes[i];\n\n if (attribute && attribute.specified && regex.test(attribute.name)) {\n obj[this.camelize(attribute.name.slice(namespace.length))] = this.deserializeValue(attribute.value);\n }\n }\n\n return obj;\n },\n checkAttr: function checkAttr(element, namespace, _checkAttr) {\n return element.hasAttribute(namespace + _checkAttr);\n },\n setAttr: function setAttr(element, namespace, attr, value) {\n element.setAttribute(this.dasherize(namespace + attr), String(value));\n },\n getType: function getType(element) {\n return element.getAttribute('type') || 'text';\n },\n generateID: function generateID() {\n return '' + globalID++;\n },\n\n /** Third party functions **/\n deserializeValue: function deserializeValue(value) {\n var num;\n\n try {\n return value ? value == \"true\" || (value == \"false\" ? false : value == \"null\" ? null : !isNaN(num = Number(value)) ? num : /^[\\[\\{]/.test(value) ? JSON.parse(value) : value) : value;\n } catch (e) {\n return value;\n }\n },\n // Zepto camelize function\n camelize: function camelize(str) {\n return str.replace(/-+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n },\n // Zepto dasherize function\n dasherize: function dasherize(str) {\n return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase();\n },\n warn: function warn() {\n var _window$console;\n\n if (window.console && 'function' === typeof window.console.warn) (_window$console = window.console).warn.apply(_window$console, arguments);\n },\n warnOnce: function warnOnce(msg) {\n if (!pastWarnings[msg]) {\n pastWarnings[msg] = true;\n this.warn.apply(this, arguments);\n }\n },\n _resetWarnings: function _resetWarnings() {\n pastWarnings = {};\n },\n trimString: function trimString(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n },\n parse: {\n date: function date(string) {\n var parsed = string.match(/^(\\d{4,})-(\\d\\d)-(\\d\\d)$/);\n if (!parsed) return null;\n\n var _parsed$map = parsed.map(function (x) {\n return parseInt(x, 10);\n }),\n _parsed$map2 = _slicedToArray(_parsed$map, 4),\n _ = _parsed$map2[0],\n year = _parsed$map2[1],\n month = _parsed$map2[2],\n day = _parsed$map2[3];\n\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;\n return date;\n },\n string: function string(_string) {\n return _string;\n },\n integer: function integer(string) {\n if (isNaN(string)) return null;\n return parseInt(string, 10);\n },\n number: function number(string) {\n if (isNaN(string)) throw null;\n return parseFloat(string);\n },\n 'boolean': function _boolean(string) {\n return !/^\\s*false\\s*$/i.test(string);\n },\n object: function object(string) {\n return Utils.deserializeValue(string);\n },\n regexp: function regexp(_regexp) {\n var flags = ''; // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern\n\n if (/^\\/.*\\/(?:[gimy]*)$/.test(_regexp)) {\n // Replace the regexp literal string with the first match group: ([gimy]*)\n // If no flag is present, this will be a blank string\n flags = _regexp.replace(/.*\\/([gimy]*)$/, '$1'); // Again, replace the regexp literal string with the first match group:\n // everything excluding the opening and closing slashes and the flags\n\n _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');\n } else {\n // Anchor regexp:\n _regexp = '^' + _regexp + '$';\n }\n\n return new RegExp(_regexp, flags);\n }\n },\n parseRequirement: function parseRequirement(requirementType, string) {\n var converter = this.parse[requirementType || 'string'];\n if (!converter) throw 'Unknown requirement specification: \"' + requirementType + '\"';\n var converted = converter(string);\n if (converted === null) throw \"Requirement is not a \".concat(requirementType, \": \\\"\").concat(string, \"\\\"\");\n return converted;\n },\n namespaceEvents: function namespaceEvents(events, namespace) {\n events = this.trimString(events || '').split(/\\s+/);\n if (!events[0]) return '';\n return $.map(events, function (evt) {\n return \"\".concat(evt, \".\").concat(namespace);\n }).join(' ');\n },\n difference: function difference(array, remove) {\n // This is O(N^2), should be optimized\n var result = [];\n $.each(array, function (_, elem) {\n if (remove.indexOf(elem) == -1) result.push(elem);\n });\n return result;\n },\n // Alter-ego to native Promise.all, but for jQuery\n all: function all(promises) {\n // jQuery treats $.when() and $.when(singlePromise) differently; let's avoid that and add spurious elements\n return $.when.apply($, _toConsumableArray(promises).concat([42, 42]));\n },\n // Object.create polyfill, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Polyfill\n objectCreate: Object.create || function () {\n var Object = function Object() {};\n\n return function (prototype) {\n if (arguments.length > 1) {\n throw Error('Second argument not supported');\n }\n\n if (_typeof(prototype) != 'object') {\n throw TypeError('Argument must be an object');\n }\n\n Object.prototype = prototype;\n var result = new Object();\n Object.prototype = null;\n return result;\n };\n }(),\n _SubmitSelector: 'input[type=\"submit\"], button:submit'\n };\n\n // All these options could be overriden and specified directly in DOM using\n // `data-parsley-` default DOM-API\n // eg: `inputs` can be set in DOM using `data-parsley-inputs=\"input, textarea\"`\n // eg: `data-parsley-stop-on-first-failing-constraint=\"false\"`\n var Defaults = {\n // ### General\n // Default data-namespace for DOM API\n namespace: 'data-parsley-',\n // Supported inputs by default\n inputs: 'input, textarea, select',\n // Excluded inputs by default\n excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden]',\n // Stop validating field on highest priority failing constraint\n priorityEnabled: true,\n // ### Field only\n // identifier used to group together inputs (e.g. radio buttons...)\n multiple: null,\n // identifier (or array of identifiers) used to validate only a select group of inputs\n group: null,\n // ### UI\n // Enable\\Disable error messages\n uiEnabled: true,\n // Key events threshold before validation\n validationThreshold: 3,\n // Focused field on form validation error. 'first'|'last'|'none'\n focus: 'first',\n // event(s) that will trigger validation before first failure. eg: `input`...\n trigger: false,\n // event(s) that will trigger validation after first failure.\n triggerAfterFailure: 'input',\n // Class that would be added on every failing validation Parsley field\n errorClass: 'parsley-error',\n // Same for success validation\n successClass: 'parsley-success',\n // Return the `$element` that will receive these above success or error classes\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n classHandler: function classHandler(Field) {},\n // Return the `$element` where errors will be appended\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n errorsContainer: function errorsContainer(Field) {},\n // ul elem that would receive errors' list\n errorsWrapper: '<ul class=\"parsley-errors-list\"></ul>',\n // li elem that would receive error message\n errorTemplate: '<li></li>'\n };\n\n var Base = function Base() {\n this.__id__ = Utils.generateID();\n };\n\n Base.prototype = {\n asyncSupport: true,\n // Deprecated\n _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {\n var _this = this;\n\n var pipe = function pipe() {\n var r = $.Deferred();\n if (true !== _this.validationResult) r.reject();\n return r.resolve().promise();\n };\n\n return [pipe, pipe];\n },\n actualizeOptions: function actualizeOptions() {\n Utils.attr(this.element, this.options.namespace, this.domOptions);\n if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();\n return this;\n },\n _resetOptions: function _resetOptions(initOptions) {\n this.domOptions = Utils.objectCreate(this.parent.options);\n this.options = Utils.objectCreate(this.domOptions); // Shallow copy of ownProperties of initOptions:\n\n for (var i in initOptions) {\n if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];\n }\n\n this.actualizeOptions();\n },\n _listeners: null,\n // Register a callback for the given event name\n // Callback is called with context as the first argument and the `this`\n // The context is the current parsley instance, or window.Parsley if global\n // A return value of `false` will interrupt the calls\n on: function on(name, fn) {\n this._listeners = this._listeners || {};\n var queue = this._listeners[name] = this._listeners[name] || [];\n queue.push(fn);\n return this;\n },\n // Deprecated. Use `on` instead\n subscribe: function subscribe(name, fn) {\n $.listenTo(this, name.toLowerCase(), fn);\n },\n // Unregister a callback (or all if none is given) for the given event name\n off: function off(name, fn) {\n var queue = this._listeners && this._listeners[name];\n\n if (queue) {\n if (!fn) {\n delete this._listeners[name];\n } else {\n for (var i = queue.length; i--;) {\n if (queue[i] === fn) queue.splice(i, 1);\n }\n }\n }\n\n return this;\n },\n // Deprecated. Use `off`\n unsubscribe: function unsubscribe(name, fn) {\n $.unsubscribeTo(this, name.toLowerCase());\n },\n // Trigger an event of the given name\n // A return value of `false` interrupts the callback chain\n // Returns false if execution was interrupted\n trigger: function trigger(name, target, extraArg) {\n target = target || this;\n var queue = this._listeners && this._listeners[name];\n var result;\n\n if (queue) {\n for (var i = queue.length; i--;) {\n result = queue[i].call(target, target, extraArg);\n if (result === false) return result;\n }\n }\n\n if (this.parent) {\n return this.parent.trigger(name, target, extraArg);\n }\n\n return true;\n },\n asyncIsValid: function asyncIsValid(group, force) {\n Utils.warnOnce(\"asyncIsValid is deprecated; please use whenValid instead\");\n return this.whenValid({\n group: group,\n force: force\n });\n },\n _findRelated: function _findRelated() {\n return this.options.multiple ? $(this.parent.element.querySelectorAll(\"[\".concat(this.options.namespace, \"multiple=\\\"\").concat(this.options.multiple, \"\\\"]\"))) : this.$element;\n }\n };\n\n var convertArrayRequirement = function convertArrayRequirement(string, length) {\n var m = string.match(/^\\s*\\[(.*)\\]\\s*$/);\n if (!m) throw 'Requirement is not an array: \"' + string + '\"';\n var values = m[1].split(',').map(Utils.trimString);\n if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';\n return values;\n };\n\n var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {\n var main = null;\n var extra = {};\n\n for (var key in requirementSpec) {\n if (key) {\n var value = extraOptionReader(key);\n if ('string' === typeof value) value = Utils.parseRequirement(requirementSpec[key], value);\n extra[key] = value;\n } else {\n main = Utils.parseRequirement(requirementSpec[key], string);\n }\n }\n\n return [main, extra];\n }; // A Validator needs to implement the methods `validate` and `parseRequirements`\n\n\n var Validator = function Validator(spec) {\n $.extend(true, this, spec);\n };\n\n Validator.prototype = {\n // Returns `true` iff the given `value` is valid according the given requirements.\n validate: function validate(value, requirementFirstArg) {\n if (this.fn) {\n // Legacy style validator\n if (arguments.length > 3) // If more args then value, requirement, instance...\n requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest\n\n return this.fn(value, requirementFirstArg);\n }\n\n if (Array.isArray(value)) {\n if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';\n return this.validateMultiple.apply(this, arguments);\n } else {\n var instance = arguments[arguments.length - 1];\n\n if (this.validateDate && instance._isDateInput()) {\n arguments[0] = Utils.parse.date(arguments[0]);\n if (arguments[0] === null) return false;\n return this.validateDate.apply(this, arguments);\n }\n\n if (this.validateNumber) {\n if (!value) // Builtin validators all accept empty strings, except `required` of course\n return true;\n if (isNaN(value)) return false;\n arguments[0] = parseFloat(arguments[0]);\n return this.validateNumber.apply(this, arguments);\n }\n\n if (this.validateString) {\n return this.validateString.apply(this, arguments);\n }\n\n throw 'Validator `' + this.name + '` only handles multiple values';\n }\n },\n // Parses `requirements` into an array of arguments,\n // according to `this.requirementType`\n parseRequirements: function parseRequirements(requirements, extraOptionReader) {\n if ('string' !== typeof requirements) {\n // Assume requirement already parsed\n // but make sure we return an array\n return Array.isArray(requirements) ? requirements : [requirements];\n }\n\n var type = this.requirementType;\n\n if (Array.isArray(type)) {\n var values = convertArrayRequirement(requirements, type.length);\n\n for (var i = 0; i < values.length; i++) {\n values[i] = Utils.parseRequirement(type[i], values[i]);\n }\n\n return values;\n } else if ($.isPlainObject(type)) {\n return convertExtraOptionRequirement(type, requirements, extraOptionReader);\n } else {\n return [Utils.parseRequirement(type, requirements)];\n }\n },\n // Defaults:\n requirementType: 'string',\n priority: 2\n };\n\n var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {\n this.__class__ = 'ValidatorRegistry'; // Default Parsley locale is en\n\n this.locale = 'en';\n this.init(validators || {}, catalog || {});\n };\n\n var typeTesters = {\n email: /^((([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))$/,\n // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers\n number: /^-?(\\d*\\.)?\\d+(e[-+]?\\d+)?$/i,\n integer: /^-?\\d+$/,\n digits: /^\\d+$/,\n alphanum: /^\\w+$/i,\n date: {\n test: function test(value) {\n return Utils.parse.date(value) !== null;\n }\n },\n url: new RegExp(\"^\" + // protocol identifier\n \"(?:(?:https?|ftp)://)?\" + // ** mod: make scheme optional\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" + \"(?:\" + // IP address exclusion\n // private & local networks\n // \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" + // ** mod: allow local networks\n // \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" + \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" + \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" + \"|\" + // host name\n \"(?:(?:[a-zA-Z\\\\u00a1-\\\\uffff0-9]-*)*[a-zA-Z\\\\u00a1-\\\\uffff0-9]+)\" + // domain name\n \"(?:\\\\.(?:[a-zA-Z\\\\u00a1-\\\\uffff0-9]-*)*[a-zA-Z\\\\u00a1-\\\\uffff0-9]+)*\" + // TLD identifier\n \"(?:\\\\.(?:[a-zA-Z\\\\u00a1-\\\\uffff]{2,}))\" + \")\" + // port number\n \"(?::\\\\d{2,5})?\" + // resource path\n \"(?:/\\\\S*)?\" + \"$\")\n };\n typeTesters.range = typeTesters.number; // See http://stackoverflow.com/a/10454560/8279\n\n var decimalPlaces = function decimalPlaces(num) {\n var match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(0, // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) - ( // Adjust for scientific notation.\n match[2] ? +match[2] : 0));\n }; // parseArguments('number', ['1', '2']) => [1, 2]\n\n\n var parseArguments = function parseArguments(type, args) {\n return args.map(Utils.parse[type]);\n }; // operatorToValidator returns a validating function for an operator function, applied to the given type\n\n\n var operatorToValidator = function operatorToValidator(type, operator) {\n return function (value) {\n for (var _len = arguments.length, requirementsAndInput = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n requirementsAndInput[_key - 1] = arguments[_key];\n }\n\n requirementsAndInput.pop(); // Get rid of `input` argument\n\n return operator.apply(void 0, [value].concat(_toConsumableArray(parseArguments(type, requirementsAndInput))));\n };\n };\n\n var comparisonOperator = function comparisonOperator(operator) {\n return {\n validateDate: operatorToValidator('date', operator),\n validateNumber: operatorToValidator('number', operator),\n requirementType: operator.length <= 2 ? 'string' : ['string', 'string'],\n // Support operators with a 1 or 2 requirement(s)\n priority: 30\n };\n };\n\n ValidatorRegistry.prototype = {\n init: function init(validators, catalog) {\n this.catalog = catalog; // Copy prototype's validators:\n\n this.validators = _extends({}, this.validators);\n\n for (var name in validators) {\n this.addValidator(name, validators[name].fn, validators[name].priority);\n }\n\n window.Parsley.trigger('parsley:validator:init');\n },\n // Set new messages locale if we have dictionary loaded in ParsleyConfig.i18n\n setLocale: function setLocale(locale) {\n if ('undefined' === typeof this.catalog[locale]) throw new Error(locale + ' is not available in the catalog');\n this.locale = locale;\n return this;\n },\n // Add a new messages catalog for a given locale. Set locale for this catalog if set === `true`\n addCatalog: function addCatalog(locale, messages, set) {\n if ('object' === _typeof(messages)) this.catalog[locale] = messages;\n if (true === set) return this.setLocale(locale);\n return this;\n },\n // Add a specific message for a given constraint in a given locale\n addMessage: function addMessage(locale, name, message) {\n if ('undefined' === typeof this.catalog[locale]) this.catalog[locale] = {};\n this.catalog[locale][name] = message;\n return this;\n },\n // Add messages for a given locale\n addMessages: function addMessages(locale, nameMessageObject) {\n for (var name in nameMessageObject) {\n this.addMessage(locale, name, nameMessageObject[name]);\n }\n\n return this;\n },\n // Add a new validator\n //\n // addValidator('custom', {\n // requirementType: ['integer', 'integer'],\n // validateString: function(value, from, to) {},\n // priority: 22,\n // messages: {\n // en: \"Hey, that's no good\",\n // fr: \"Aye aye, pas bon du tout\",\n // }\n // })\n //\n // Old API was addValidator(name, function, priority)\n //\n addValidator: function addValidator(name, arg1, arg2) {\n if (this.validators[name]) Utils.warn('Validator \"' + name + '\" is already defined.');else if (Defaults.hasOwnProperty(name)) {\n Utils.warn('\"' + name + '\" is a restricted keyword and is not a valid validator name.');\n return;\n }\n return this._setValidator.apply(this, arguments);\n },\n hasValidator: function hasValidator(name) {\n return !!this.validators[name];\n },\n updateValidator: function updateValidator(name, arg1, arg2) {\n if (!this.validators[name]) {\n Utils.warn('Validator \"' + name + '\" is not already defined.');\n return this.addValidator.apply(this, arguments);\n }\n\n return this._setValidator.apply(this, arguments);\n },\n removeValidator: function removeValidator(name) {\n if (!this.validators[name]) Utils.warn('Validator \"' + name + '\" is not defined.');\n delete this.validators[name];\n return this;\n },\n _setValidator: function _setValidator(name, validator, priority) {\n if ('object' !== _typeof(validator)) {\n // Old style validator, with `fn` and `priority`\n validator = {\n fn: validator,\n priority: priority\n };\n }\n\n if (!validator.validate) {\n validator = new Validator(validator);\n }\n\n this.validators[name] = validator;\n\n for (var locale in validator.messages || {}) {\n this.addMessage(locale, name, validator.messages[locale]);\n }\n\n return this;\n },\n getErrorMessage: function getErrorMessage(constraint) {\n var message; // Type constraints are a bit different, we have to match their requirements too to find right error message\n\n if ('type' === constraint.name) {\n var typeMessages = this.catalog[this.locale][constraint.name] || {};\n message = typeMessages[constraint.requirements];\n } else message = this.formatMessage(this.catalog[this.locale][constraint.name], constraint.requirements);\n\n return message || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage;\n },\n // Kind of light `sprintf()` implementation\n formatMessage: function formatMessage(string, parameters) {\n if ('object' === _typeof(parameters)) {\n for (var i in parameters) {\n string = this.formatMessage(string, parameters[i]);\n }\n\n return string;\n }\n\n return 'string' === typeof string ? string.replace(/%s/i, parameters) : '';\n },\n // Here is the Parsley default validators list.\n // A validator is an object with the following key values:\n // - priority: an integer\n // - requirement: 'string' (default), 'integer', 'number', 'regexp' or an Array of these\n // - validateString, validateMultiple, validateNumber: functions returning `true`, `false` or a promise\n // Alternatively, a validator can be a function that returns such an object\n //\n validators: {\n notblank: {\n validateString: function validateString(value) {\n return /\\S/.test(value);\n },\n priority: 2\n },\n required: {\n validateMultiple: function validateMultiple(values) {\n return values.length > 0;\n },\n validateString: function validateString(value) {\n return /\\S/.test(value);\n },\n priority: 512\n },\n type: {\n validateString: function validateString(value, type) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 'any' : _ref$step,\n _ref$base = _ref.base,\n base = _ref$base === void 0 ? 0 : _ref$base;\n\n var tester = typeTesters[type];\n\n if (!tester) {\n throw new Error('validator type `' + type + '` is not supported');\n }\n\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n if (!tester.test(value)) return false;\n\n if ('number' === type) {\n if (!/^any$/i.test(step || '')) {\n var nb = Number(value);\n var decimals = Math.max(decimalPlaces(step), decimalPlaces(base));\n if (decimalPlaces(nb) > decimals) // Value can't have too many decimals\n return false; // Be careful of rounding errors by using integers.\n\n var toInt = function toInt(f) {\n return Math.round(f * Math.pow(10, decimals));\n };\n\n if ((toInt(nb) - toInt(base)) % toInt(step) != 0) return false;\n }\n }\n\n return true;\n },\n requirementType: {\n '': 'string',\n step: 'string',\n base: 'number'\n },\n priority: 256\n },\n pattern: {\n validateString: function validateString(value, regexp) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return regexp.test(value);\n },\n requirementType: 'regexp',\n priority: 64\n },\n minlength: {\n validateString: function validateString(value, requirement) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return value.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxlength: {\n validateString: function validateString(value, requirement) {\n return value.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n length: {\n validateString: function validateString(value, min, max) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n return value.length >= min && value.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n mincheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxcheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n check: {\n validateMultiple: function validateMultiple(values, min, max) {\n return values.length >= min && values.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n min: comparisonOperator(function (value, requirement) {\n return value >= requirement;\n }),\n max: comparisonOperator(function (value, requirement) {\n return value <= requirement;\n }),\n range: comparisonOperator(function (value, min, max) {\n return value >= min && value <= max;\n }),\n equalto: {\n validateString: function validateString(value, refOrValue) {\n if (!value) return true; // Builtin validators all accept empty strings, except `required` of course\n\n var $reference = $(refOrValue);\n if ($reference.length) return value === $reference.val();else return value === refOrValue;\n },\n priority: 256\n },\n euvatin: {\n validateString: function validateString(value, refOrValue) {\n if (!value) {\n return true; // Builtin validators all accept empty strings, except `required` of course\n }\n\n var re = /^[A-Z][A-Z][A-Za-z0-9 -]{2,}$/;\n return re.test(value);\n },\n priority: 30\n }\n }\n };\n\n var UI = {};\n\n var diffResults = function diffResults(newResult, oldResult, deep) {\n var added = [];\n var kept = [];\n\n for (var i = 0; i < newResult.length; i++) {\n var found = false;\n\n for (var j = 0; j < oldResult.length; j++) {\n if (newResult[i].assert.name === oldResult[j].assert.name) {\n found = true;\n break;\n }\n }\n\n if (found) kept.push(newResult[i]);else added.push(newResult[i]);\n }\n\n return {\n kept: kept,\n added: added,\n removed: !deep ? diffResults(oldResult, newResult, true).added : []\n };\n };\n\n UI.Form = {\n _actualizeTriggers: function _actualizeTriggers() {\n var _this = this;\n\n this.$element.on('submit.Parsley', function (evt) {\n _this.onSubmitValidate(evt);\n });\n this.$element.on('click.Parsley', Utils._SubmitSelector, function (evt) {\n _this.onSubmitButton(evt);\n }); // UI could be disabled\n\n if (false === this.options.uiEnabled) return;\n this.element.setAttribute('novalidate', '');\n },\n focus: function focus() {\n this._focusedField = null;\n if (true === this.validationResult || 'none' === this.options.focus) return null;\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n\n if (true !== field.validationResult && field.validationResult.length > 0 && 'undefined' === typeof field.options.noFocus) {\n this._focusedField = field.$element;\n if ('first' === this.options.focus) break;\n }\n }\n\n if (null === this._focusedField) return null;\n return this._focusedField.focus();\n },\n _destroyUI: function _destroyUI() {\n // Reset all event listeners\n this.$element.off('.Parsley');\n }\n };\n UI.Field = {\n _reflowUI: function _reflowUI() {\n this._buildUI(); // If this field doesn't have an active UI don't bother doing something\n\n\n if (!this._ui) return; // Diff between two validation results\n\n var diff = diffResults(this.validationResult, this._ui.lastValidationResult); // Then store current validation result for next reflow\n\n this._ui.lastValidationResult = this.validationResult; // Handle valid / invalid / none field class\n\n this._manageStatusClass(); // Add, remove, updated errors messages\n\n\n this._manageErrorsMessages(diff); // Triggers impl\n\n\n this._actualizeTriggers(); // If field is not valid for the first time, bind keyup trigger to ease UX and quickly inform user\n\n\n if ((diff.kept.length || diff.added.length) && !this._failedOnce) {\n this._failedOnce = true;\n\n this._actualizeTriggers();\n }\n },\n // Returns an array of field's error message(s)\n getErrorsMessages: function getErrorsMessages() {\n // No error message, field is valid\n if (true === this.validationResult) return [];\n var messages = [];\n\n for (var i = 0; i < this.validationResult.length; i++) {\n messages.push(this.validationResult[i].errorMessage || this._getErrorMessage(this.validationResult[i].assert));\n }\n\n return messages;\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n addError: function addError(name) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n message = _ref.message,\n assert = _ref.assert,\n _ref$updateClass = _ref.updateClass,\n updateClass = _ref$updateClass === void 0 ? true : _ref$updateClass;\n\n this._buildUI();\n\n this._addError(name, {\n message: message,\n assert: assert\n });\n\n if (updateClass) this._errorClass();\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n updateError: function updateError(name) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n message = _ref2.message,\n assert = _ref2.assert,\n _ref2$updateClass = _ref2.updateClass,\n updateClass = _ref2$updateClass === void 0 ? true : _ref2$updateClass;\n\n this._buildUI();\n\n this._updateError(name, {\n message: message,\n assert: assert\n });\n\n if (updateClass) this._errorClass();\n },\n // It's a goal of Parsley that this method is no longer required [#1073]\n removeError: function removeError(name) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$updateClass = _ref3.updateClass,\n updateClass = _ref3$updateClass === void 0 ? true : _ref3$updateClass;\n\n this._buildUI();\n\n this._removeError(name); // edge case possible here: remove a standard Parsley error that is still failing in this.validationResult\n // but highly improbable cuz' manually removing a well Parsley handled error makes no sense.\n\n\n if (updateClass) this._manageStatusClass();\n },\n _manageStatusClass: function _manageStatusClass() {\n if (this.hasConstraints() && this.needsValidation() && true === this.validationResult) this._successClass();else if (this.validationResult.length > 0) this._errorClass();else this._resetClass();\n },\n _manageErrorsMessages: function _manageErrorsMessages(diff) {\n if ('undefined' !== typeof this.options.errorsMessagesDisabled) return; // Case where we have errorMessage option that configure an unique field error message, regardless failing validators\n\n if ('undefined' !== typeof this.options.errorMessage) {\n if (diff.added.length || diff.kept.length) {\n this._insertErrorWrapper();\n\n if (0 === this._ui.$errorsWrapper.find('.parsley-custom-error-message').length) this._ui.$errorsWrapper.append($(this.options.errorTemplate).addClass('parsley-custom-error-message'));\n\n this._ui.$errorClassHandler.attr('aria-describedby', this._ui.errorsWrapperId);\n\n return this._ui.$errorsWrapper.addClass('filled').attr('aria-hidden', 'false').find('.parsley-custom-error-message').html(this.options.errorMessage);\n }\n\n this._ui.$errorClassHandler.removeAttr('aria-describedby');\n\n return this._ui.$errorsWrapper.removeClass('filled').attr('aria-hidden', 'true').find('.parsley-custom-error-message').remove();\n } // Show, hide, update failing constraints messages\n\n\n for (var i = 0; i < diff.removed.length; i++) {\n this._removeError(diff.removed[i].assert.name);\n }\n\n for (i = 0; i < diff.added.length; i++) {\n this._addError(diff.added[i].assert.name, {\n message: diff.added[i].errorMessage,\n assert: diff.added[i].assert\n });\n }\n\n for (i = 0; i < diff.kept.length; i++) {\n this._updateError(diff.kept[i].assert.name, {\n message: diff.kept[i].errorMessage,\n assert: diff.kept[i].assert\n });\n }\n },\n _addError: function _addError(name, _ref4) {\n var message = _ref4.message,\n assert = _ref4.assert;\n\n this._insertErrorWrapper();\n\n this._ui.$errorClassHandler.attr('aria-describedby', this._ui.errorsWrapperId);\n\n this._ui.$errorsWrapper.addClass('filled').attr('aria-hidden', 'false').append($(this.options.errorTemplate).addClass('parsley-' + name).html(message || this._getErrorMessage(assert)));\n },\n _updateError: function _updateError(name, _ref5) {\n var message = _ref5.message,\n assert = _ref5.assert;\n\n this._ui.$errorsWrapper.addClass('filled').find('.parsley-' + name).html(message || this._getErrorMessage(assert));\n },\n _removeError: function _removeError(name) {\n this._ui.$errorClassHandler.removeAttr('aria-describedby');\n\n this._ui.$errorsWrapper.removeClass('filled').attr('aria-hidden', 'true').find('.parsley-' + name).remove();\n },\n _getErrorMessage: function _getErrorMessage(constraint) {\n var customConstraintErrorMessage = constraint.name + 'Message';\n if ('undefined' !== typeof this.options[customConstraintErrorMessage]) return window.Parsley.formatMessage(this.options[customConstraintErrorMessage], constraint.requirements);\n return window.Parsley.getErrorMessage(constraint);\n },\n _buildUI: function _buildUI() {\n // UI could be already built or disabled\n if (this._ui || false === this.options.uiEnabled) return;\n var _ui = {}; // Give field its Parsley id in DOM\n\n this.element.setAttribute(this.options.namespace + 'id', this.__id__);\n /** Generate important UI elements and store them in this **/\n // $errorClassHandler is the $element that woul have parsley-error and parsley-success classes\n\n _ui.$errorClassHandler = this._manageClassHandler(); // $errorsWrapper is a div that would contain the various field errors, it will be appended into $errorsContainer\n\n _ui.errorsWrapperId = 'parsley-id-' + (this.options.multiple ? 'multiple-' + this.options.multiple : this.__id__);\n _ui.$errorsWrapper = $(this.options.errorsWrapper).attr('id', _ui.errorsWrapperId); // ValidationResult UI storage to detect what have changed bwt two validations, and update DOM accordingly\n\n _ui.lastValidationResult = [];\n _ui.validationInformationVisible = false; // Store it in this for later\n\n this._ui = _ui;\n },\n // Determine which element will have `parsley-error` and `parsley-success` classes\n _manageClassHandler: function _manageClassHandler() {\n // Class handled could also be determined by function given in Parsley options\n if ('string' === typeof this.options.classHandler && $(this.options.classHandler).length) return $(this.options.classHandler); // Class handled could also be determined by function given in Parsley options\n\n var $handlerFunction = this.options.classHandler; // It might also be the function name of a global function\n\n if ('string' === typeof this.options.classHandler && 'function' === typeof window[this.options.classHandler]) $handlerFunction = window[this.options.classHandler];\n\n if ('function' === typeof $handlerFunction) {\n var $handler = $handlerFunction.call(this, this); // If this function returned a valid existing DOM element, go for it\n\n if ('undefined' !== typeof $handler && $handler.length) return $handler;\n } else if ('object' === _typeof($handlerFunction) && $handlerFunction instanceof jQuery && $handlerFunction.length) {\n return $handlerFunction;\n } else if ($handlerFunction) {\n Utils.warn('The class handler `' + $handlerFunction + '` does not exist in DOM nor as a global JS function');\n }\n\n return this._inputHolder();\n },\n _inputHolder: function _inputHolder() {\n // if simple element (input, texatrea, select...) it will perfectly host the classes and precede the error container\n if (!this.options.multiple || this.element.nodeName === 'SELECT') return this.$element; // But if multiple element (radio, checkbox), that would be their parent\n\n return this.$element.parent();\n },\n _insertErrorWrapper: function _insertErrorWrapper() {\n var $errorsContainer = this.options.errorsContainer; // Nothing to do if already inserted\n\n if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();\n\n if ('string' === typeof $errorsContainer) {\n if ($($errorsContainer).length) return $($errorsContainer).append(this._ui.$errorsWrapper);else if ('function' === typeof window[$errorsContainer]) $errorsContainer = window[$errorsContainer];else Utils.warn('The errors container `' + $errorsContainer + '` does not exist in DOM nor as a global JS function');\n }\n\n if ('function' === typeof $errorsContainer) $errorsContainer = $errorsContainer.call(this, this);\n if ('object' === _typeof($errorsContainer) && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);\n return this._inputHolder().after(this._ui.$errorsWrapper);\n },\n _actualizeTriggers: function _actualizeTriggers() {\n var _this2 = this;\n\n var $toBind = this._findRelated();\n\n var trigger; // Remove Parsley events already bound on this field\n\n $toBind.off('.Parsley');\n if (this._failedOnce) $toBind.on(Utils.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {\n _this2._validateIfNeeded();\n });else if (trigger = Utils.namespaceEvents(this.options.trigger, 'Parsley')) {\n $toBind.on(trigger, function (event) {\n _this2._validateIfNeeded(event);\n });\n }\n },\n _validateIfNeeded: function _validateIfNeeded(event) {\n var _this3 = this;\n\n // For keyup, keypress, keydown, input... events that could be a little bit obstrusive\n // do not validate if val length < min threshold on first validation. Once field have been validated once and info\n // about success or failure have been displayed, always validate with this trigger to reflect every yalidation change.\n if (event && /key|input/.test(event.type)) if (!(this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold) return;\n\n if (this.options.debounce) {\n window.clearTimeout(this._debounced);\n this._debounced = window.setTimeout(function () {\n return _this3.validate();\n }, this.options.debounce);\n } else this.validate();\n },\n _resetUI: function _resetUI() {\n // Reset all event listeners\n this._failedOnce = false;\n\n this._actualizeTriggers(); // Nothing to do if UI never initialized for this field\n\n\n if ('undefined' === typeof this._ui) return; // Reset all errors' li\n\n this._ui.$errorsWrapper.removeClass('filled').children().remove(); // Reset validation class\n\n\n this._resetClass(); // Reset validation flags and last validation result\n\n\n this._ui.lastValidationResult = [];\n this._ui.validationInformationVisible = false;\n },\n _destroyUI: function _destroyUI() {\n this._resetUI();\n\n if ('undefined' !== typeof this._ui) this._ui.$errorsWrapper.remove();\n delete this._ui;\n },\n _successClass: function _successClass() {\n this._ui.validationInformationVisible = true;\n\n this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass);\n },\n _errorClass: function _errorClass() {\n this._ui.validationInformationVisible = true;\n\n this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass);\n },\n _resetClass: function _resetClass() {\n this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass);\n }\n };\n\n var Form = function Form(element, domOptions, options) {\n this.__class__ = 'Form';\n this.element = element;\n this.$element = $(element);\n this.domOptions = domOptions;\n this.options = options;\n this.parent = window.Parsley;\n this.fields = [];\n this.validationResult = null;\n };\n\n var statusMapping = {\n pending: null,\n resolved: true,\n rejected: false\n };\n Form.prototype = {\n onSubmitValidate: function onSubmitValidate(event) {\n var _this = this;\n\n // This is a Parsley generated submit event, do not validate, do not prevent, simply exit and keep normal behavior\n if (true === event.parsley) return; // If we didn't come here through a submit button, use the first one in the form\n\n var submitSource = this._submitSource || this.$element.find(Utils._SubmitSelector)[0];\n this._submitSource = null;\n this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);\n if (submitSource && null !== submitSource.getAttribute('formnovalidate')) return;\n window.Parsley._remoteCache = {};\n var promise = this.whenValidate({\n event: event\n });\n\n if ('resolved' === promise.state() && false !== this._trigger('submit')) ; else {\n // Rejected or pending: cancel this submit\n event.stopImmediatePropagation();\n event.preventDefault();\n if ('pending' === promise.state()) promise.done(function () {\n _this._submit(submitSource);\n });\n }\n },\n onSubmitButton: function onSubmitButton(event) {\n this._submitSource = event.currentTarget;\n },\n // internal\n // _submit submits the form, this time without going through the validations.\n // Care must be taken to \"fake\" the actual submit button being clicked.\n _submit: function _submit(submitSource) {\n if (false === this._trigger('submit')) return; // Add submit button's data\n\n if (submitSource) {\n var $synthetic = this.$element.find('.parsley-synthetic-submit-button').prop('disabled', false);\n if (0 === $synthetic.length) $synthetic = $('<input class=\"parsley-synthetic-submit-button\" type=\"hidden\">').appendTo(this.$element);\n $synthetic.attr({\n name: submitSource.getAttribute('name'),\n value: submitSource.getAttribute('value')\n });\n }\n\n this.$element.trigger(_extends($.Event('submit'), {\n parsley: true\n }));\n },\n // Performs validation on fields while triggering events.\n // @returns `true` if all validations succeeds, `false`\n // if a failure is immediately detected, or `null`\n // if dependant on a promise.\n // Consider using `whenValidate` instead.\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments = Array.prototype.slice.call(arguments),\n group = _arguments[0],\n force = _arguments[1],\n event = _arguments[2];\n\n options = {\n group: group,\n force: force,\n event: event\n };\n }\n\n return statusMapping[this.whenValidate(options).state()];\n },\n whenValidate: function whenValidate() {\n var _this2 = this,\n _Utils$all$done$fail$;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n group = _ref.group,\n force = _ref.force,\n event = _ref.event;\n\n this.submitEvent = event;\n\n if (event) {\n this.submitEvent = _extends({}, event, {\n preventDefault: function preventDefault() {\n Utils.warnOnce(\"Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`\");\n _this2.validationResult = false;\n }\n });\n }\n\n this.validationResult = true; // fire validate event to eventually modify things before every validation\n\n this._trigger('validate'); // Refresh form DOM options and form's fields that could have changed\n\n\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this2.fields, function (field) {\n return field.whenValidate({\n force: force,\n group: group\n });\n });\n });\n\n return (_Utils$all$done$fail$ = Utils.all(promises).done(function () {\n _this2._trigger('success');\n }).fail(function () {\n _this2.validationResult = false;\n\n _this2.focus();\n\n _this2._trigger('error');\n }).always(function () {\n _this2._trigger('validated');\n })).pipe.apply(_Utils$all$done$fail$, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n // Iterate over refreshed fields, and stop on first failure.\n // Returns `true` if all fields are valid, `false` if a failure is detected\n // or `null` if the result depends on an unresolved promise.\n // Prefer using `whenValid` instead.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments2 = Array.prototype.slice.call(arguments),\n group = _arguments2[0],\n force = _arguments2[1];\n\n options = {\n group: group,\n force: force\n };\n }\n\n return statusMapping[this.whenValid(options).state()];\n },\n // Iterate over refreshed fields and validate them.\n // Returns a promise.\n // A validation that immediately fails will interrupt the validations.\n whenValid: function whenValid() {\n var _this3 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n group = _ref2.group,\n force = _ref2.force;\n\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this3.fields, function (field) {\n return field.whenValid({\n group: group,\n force: force\n });\n });\n });\n\n return Utils.all(promises);\n },\n refresh: function refresh() {\n this._refreshFields();\n\n return this;\n },\n // Reset UI\n reset: function reset() {\n // Form case: emit a reset event for each field\n for (var i = 0; i < this.fields.length; i++) {\n this.fields[i].reset();\n }\n\n this._trigger('reset');\n },\n // Destroy Parsley instance (+ UI)\n destroy: function destroy() {\n // Field case: emit destroy event to clean UI and then destroy stored instance\n this._destroyUI(); // Form case: destroy all its fields and then destroy stored instance\n\n\n for (var i = 0; i < this.fields.length; i++) {\n this.fields[i].destroy();\n }\n\n this.$element.removeData('Parsley');\n\n this._trigger('destroy');\n },\n _refreshFields: function _refreshFields() {\n return this.actualizeOptions()._bindFields();\n },\n _bindFields: function _bindFields() {\n var _this4 = this;\n\n var oldFields = this.fields;\n this.fields = [];\n this.fieldsMappedById = {};\n\n this._withoutReactualizingFormOptions(function () {\n _this4.$element.find(_this4.options.inputs).not(_this4.options.excluded).not(\"[\".concat(_this4.options.namespace, \"excluded=true]\")).each(function (_, element) {\n var fieldInstance = new window.Parsley.Factory(element, {}, _this4); // Only add valid and not excluded `Field` and `FieldMultiple` children\n\n if ('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) {\n var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;\n\n if ('undefined' === typeof _this4.fieldsMappedById[uniqueId]) {\n _this4.fieldsMappedById[uniqueId] = fieldInstance;\n\n _this4.fields.push(fieldInstance);\n }\n }\n });\n\n $.each(Utils.difference(oldFields, _this4.fields), function (_, field) {\n field.reset();\n });\n });\n\n return this;\n },\n // Internal only.\n // Looping on a form's fields to do validation or similar\n // will trigger reactualizing options on all of them, which\n // in turn will reactualize the form's options.\n // To avoid calling actualizeOptions so many times on the form\n // for nothing, _withoutReactualizingFormOptions temporarily disables\n // the method actualizeOptions on this form while `fn` is called.\n _withoutReactualizingFormOptions: function _withoutReactualizingFormOptions(fn) {\n var oldActualizeOptions = this.actualizeOptions;\n\n this.actualizeOptions = function () {\n return this;\n };\n\n var result = fn();\n this.actualizeOptions = oldActualizeOptions;\n return result;\n },\n // Internal only.\n // Shortcut to trigger an event\n // Returns true iff event is not interrupted and default not prevented.\n _trigger: function _trigger(eventName) {\n return this.trigger('form:' + eventName);\n }\n };\n\n var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {\n var validatorSpec = window.Parsley._validatorRegistry.validators[name];\n var validator = new Validator(validatorSpec);\n priority = priority || parsleyField.options[name + 'Priority'] || validator.priority;\n isDomConstraint = true === isDomConstraint;\n\n _extends(this, {\n validator: validator,\n name: name,\n requirements: requirements,\n priority: priority,\n isDomConstraint: isDomConstraint\n });\n\n this._parseRequirements(parsleyField.options);\n };\n\n var capitalize = function capitalize(str) {\n var cap = str[0].toUpperCase();\n return cap + str.slice(1);\n };\n\n Constraint.prototype = {\n validate: function validate(value, instance) {\n var _this$validator;\n\n return (_this$validator = this.validator).validate.apply(_this$validator, [value].concat(_toConsumableArray(this.requirementList), [instance]));\n },\n _parseRequirements: function _parseRequirements(options) {\n var _this = this;\n\n this.requirementList = this.validator.parseRequirements(this.requirements, function (key) {\n return options[_this.name + capitalize(key)];\n });\n }\n };\n\n var Field = function Field(field, domOptions, options, parsleyFormInstance) {\n this.__class__ = 'Field';\n this.element = field;\n this.$element = $(field); // Set parent if we have one\n\n if ('undefined' !== typeof parsleyFormInstance) {\n this.parent = parsleyFormInstance;\n }\n\n this.options = options;\n this.domOptions = domOptions; // Initialize some properties\n\n this.constraints = [];\n this.constraintsByName = {};\n this.validationResult = true; // Bind constraints\n\n this._bindConstraints();\n };\n\n var statusMapping$1 = {\n pending: null,\n resolved: true,\n rejected: false\n };\n Field.prototype = {\n // # Public API\n // Validate field and trigger some events for mainly `UI`\n // @returns `true`, an array of the validators that failed, or\n // `null` if validation is not finished. Prefer using whenValidate\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');\n options = {\n options: options\n };\n }\n\n var promise = this.whenValidate(options);\n if (!promise) // If excluded with `group` option\n return true;\n\n switch (promise.state()) {\n case 'pending':\n return null;\n\n case 'resolved':\n return true;\n\n case 'rejected':\n return this.validationResult;\n }\n },\n // Validate field and trigger some events for mainly `UI`\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if field is not in the given `group`.\n whenValidate: function whenValidate() {\n var _this$whenValid$alway,\n _this = this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n force = _ref.force,\n group = _ref.group;\n\n // do not validate a field if not the same as given validation group\n this.refresh();\n if (group && !this._isInGroup(group)) return;\n this.value = this.getValue(); // Field Validate event. `this.value` could be altered for custom needs\n\n this._trigger('validate');\n\n return (_this$whenValid$alway = this.whenValid({\n force: force,\n value: this.value,\n _refreshed: true\n }).always(function () {\n _this._reflowUI();\n }).done(function () {\n _this._trigger('success');\n }).fail(function () {\n _this._trigger('error');\n }).always(function () {\n _this._trigger('validated');\n })).pipe.apply(_this$whenValid$alway, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n hasConstraints: function hasConstraints() {\n return 0 !== this.constraints.length;\n },\n // An empty optional field does not need validation\n needsValidation: function needsValidation(value) {\n if ('undefined' === typeof value) value = this.getValue(); // If a field is empty and not required, it is valid\n // Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators\n\n if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty) return false;\n return true;\n },\n _isInGroup: function _isInGroup(group) {\n if (Array.isArray(this.options.group)) return -1 !== $.inArray(group, this.options.group);\n return this.options.group === group;\n },\n // Just validate field. Do not trigger any event.\n // Returns `true` iff all constraints pass, `false` if there are failures,\n // or `null` if the result can not be determined yet (depends on a promise)\n // See also `whenValid`.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n Utils.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');\n\n var _arguments = Array.prototype.slice.call(arguments),\n force = _arguments[0],\n value = _arguments[1];\n\n options = {\n force: force,\n value: value\n };\n }\n\n var promise = this.whenValid(options);\n if (!promise) // Excluded via `group`\n return true;\n return statusMapping$1[promise.state()];\n },\n // Just validate field. Do not trigger any event.\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if the field is not in the given `group`.\n // The argument `force` will force validation of empty fields.\n // If a `value` is given, it will be validated instead of the value of the input.\n whenValid: function whenValid() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force,\n value = _ref2.value,\n group = _ref2.group,\n _refreshed = _ref2._refreshed;\n\n // Recompute options and rebind constraints to have latest changes\n if (!_refreshed) this.refresh(); // do not validate a field if not the same as given validation group\n\n if (group && !this._isInGroup(group)) return;\n this.validationResult = true; // A field without constraint is valid\n\n if (!this.hasConstraints()) return $.when(); // Value could be passed as argument, needed to add more power to 'field:validate'\n\n if ('undefined' === typeof value || null === value) value = this.getValue();\n if (!this.needsValidation(value) && true !== force) return $.when();\n\n var groupedConstraints = this._getGroupedConstraints();\n\n var promises = [];\n $.each(groupedConstraints, function (_, constraints) {\n // Process one group of constraints at a time, we validate the constraints\n // and combine the promises together.\n var promise = Utils.all($.map(constraints, function (constraint) {\n return _this2._validateConstraint(value, constraint);\n }));\n promises.push(promise);\n if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed\n });\n return Utils.all(promises);\n },\n // @returns a promise\n _validateConstraint: function _validateConstraint(value, constraint) {\n var _this3 = this;\n\n var result = constraint.validate(value, this); // Map false to a failed promise\n\n if (false === result) result = $.Deferred().reject(); // Make sure we return a promise and that we record failures\n\n return Utils.all([result]).fail(function (errorMessage) {\n if (!(_this3.validationResult instanceof Array)) _this3.validationResult = [];\n\n _this3.validationResult.push({\n assert: constraint,\n errorMessage: 'string' === typeof errorMessage && errorMessage\n });\n });\n },\n // @returns Parsley field computed value that could be overrided or configured in DOM\n getValue: function getValue() {\n var value; // Value could be overriden in DOM or with explicit options\n\n if ('function' === typeof this.options.value) value = this.options.value(this);else if ('undefined' !== typeof this.options.value) value = this.options.value;else value = this.$element.val(); // Handle wrong DOM or configurations\n\n if ('undefined' === typeof value || null === value) return '';\n return this._handleWhitespace(value);\n },\n // Reset UI\n reset: function reset() {\n this._resetUI();\n\n return this._trigger('reset');\n },\n // Destroy Parsley instance (+ UI)\n destroy: function destroy() {\n // Field case: emit destroy event to clean UI and then destroy stored instance\n this._destroyUI();\n\n this.$element.removeData('Parsley');\n this.$element.removeData('FieldMultiple');\n\n this._trigger('destroy');\n },\n // Actualize options and rebind constraints\n refresh: function refresh() {\n this._refreshConstraints();\n\n return this;\n },\n _refreshConstraints: function _refreshConstraints() {\n return this.actualizeOptions()._bindConstraints();\n },\n refreshConstraints: function refreshConstraints() {\n Utils.warnOnce(\"Parsley's refreshConstraints is deprecated. Please use refresh\");\n return this.refresh();\n },\n\n /**\n * Add a new constraint to a field\n *\n * @param {String} name\n * @param {Mixed} requirements optional\n * @param {Number} priority optional\n * @param {Boolean} isDomConstraint optional\n */\n addConstraint: function addConstraint(name, requirements, priority, isDomConstraint) {\n if (window.Parsley._validatorRegistry.validators[name]) {\n var constraint = new Constraint(this, name, requirements, priority, isDomConstraint); // if constraint already exist, delete it and push new version\n\n if ('undefined' !== this.constraintsByName[constraint.name]) this.removeConstraint(constraint.name);\n this.constraints.push(constraint);\n this.constraintsByName[constraint.name] = constraint;\n }\n\n return this;\n },\n // Remove a constraint\n removeConstraint: function removeConstraint(name) {\n for (var i = 0; i < this.constraints.length; i++) {\n if (name === this.constraints[i].name) {\n this.constraints.splice(i, 1);\n break;\n }\n }\n\n delete this.constraintsByName[name];\n return this;\n },\n // Update a constraint (Remove + re-add)\n updateConstraint: function updateConstraint(name, parameters, priority) {\n return this.removeConstraint(name).addConstraint(name, parameters, priority);\n },\n // # Internals\n // Internal only.\n // Bind constraints from config + options + DOM\n _bindConstraints: function _bindConstraints() {\n var constraints = [];\n var constraintsByName = {}; // clean all existing DOM constraints to only keep javascript user constraints\n\n for (var i = 0; i < this.constraints.length; i++) {\n if (false === this.constraints[i].isDomConstraint) {\n constraints.push(this.constraints[i]);\n constraintsByName[this.constraints[i].name] = this.constraints[i];\n }\n }\n\n this.constraints = constraints;\n this.constraintsByName = constraintsByName; // then re-add Parsley DOM-API constraints\n\n for (var name in this.options) {\n this.addConstraint(name, this.options[name], undefined, true);\n } // finally, bind special HTML5 constraints\n\n\n return this._bindHtml5Constraints();\n },\n // Internal only.\n // Bind specific HTML5 constraints to be HTML5 compliant\n _bindHtml5Constraints: function _bindHtml5Constraints() {\n // html5 required\n if (null !== this.element.getAttribute('required')) this.addConstraint('required', true, undefined, true); // html5 pattern\n\n if (null !== this.element.getAttribute('pattern')) this.addConstraint('pattern', this.element.getAttribute('pattern'), undefined, true); // range\n\n var min = this.element.getAttribute('min');\n var max = this.element.getAttribute('max');\n if (null !== min && null !== max) this.addConstraint('range', [min, max], undefined, true); // HTML5 min\n else if (null !== min) this.addConstraint('min', min, undefined, true); // HTML5 max\n else if (null !== max) this.addConstraint('max', max, undefined, true); // length\n\n if (null !== this.element.getAttribute('minlength') && null !== this.element.getAttribute('maxlength')) this.addConstraint('length', [this.element.getAttribute('minlength'), this.element.getAttribute('maxlength')], undefined, true); // HTML5 minlength\n else if (null !== this.element.getAttribute('minlength')) this.addConstraint('minlength', this.element.getAttribute('minlength'), undefined, true); // HTML5 maxlength\n else if (null !== this.element.getAttribute('maxlength')) this.addConstraint('maxlength', this.element.getAttribute('maxlength'), undefined, true); // html5 types\n\n var type = Utils.getType(this.element); // Small special case here for HTML5 number: integer validator if step attribute is undefined or an integer value, number otherwise\n\n if ('number' === type) {\n return this.addConstraint('type', ['number', {\n step: this.element.getAttribute('step') || '1',\n base: min || this.element.getAttribute('value')\n }], undefined, true); // Regular other HTML5 supported types\n } else if (/^(email|url|range|date)$/i.test(type)) {\n return this.addConstraint('type', type, undefined, true);\n }\n\n return this;\n },\n // Internal only.\n // Field is required if have required constraint without `false` value\n _isRequired: function _isRequired() {\n if ('undefined' === typeof this.constraintsByName.required) return false;\n return false !== this.constraintsByName.required.requirements;\n },\n // Internal only.\n // Shortcut to trigger an event\n _trigger: function _trigger(eventName) {\n return this.trigger('field:' + eventName);\n },\n // Internal only\n // Handles whitespace in a value\n // Use `data-parsley-whitespace=\"squish\"` to auto squish input value\n // Use `data-parsley-whitespace=\"trim\"` to auto trim input value\n _handleWhitespace: function _handleWhitespace(value) {\n if (true === this.options.trimValue) Utils.warnOnce('data-parsley-trim-value=\"true\" is deprecated, please use data-parsley-whitespace=\"trim\"');\n if ('squish' === this.options.whitespace) value = value.replace(/\\s{2,}/g, ' ');\n if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils.trimString(value);\n return value;\n },\n _isDateInput: function _isDateInput() {\n var c = this.constraintsByName.type;\n return c && c.requirements === 'date';\n },\n // Internal only.\n // Returns the constraints, grouped by descending priority.\n // The result is thus an array of arrays of constraints.\n _getGroupedConstraints: function _getGroupedConstraints() {\n if (false === this.options.priorityEnabled) return [this.constraints];\n var groupedConstraints = [];\n var index = {}; // Create array unique of priorities\n\n for (var i = 0; i < this.constraints.length; i++) {\n var p = this.constraints[i].priority;\n if (!index[p]) groupedConstraints.push(index[p] = []);\n index[p].push(this.constraints[i]);\n } // Sort them by priority DESC\n\n\n groupedConstraints.sort(function (a, b) {\n return b[0].priority - a[0].priority;\n });\n return groupedConstraints;\n }\n };\n\n var Multiple = function Multiple() {\n this.__class__ = 'FieldMultiple';\n };\n\n Multiple.prototype = {\n // Add new `$element` sibling for multiple field\n addElement: function addElement($element) {\n this.$elements.push($element);\n return this;\n },\n // See `Field._refreshConstraints()`\n _refreshConstraints: function _refreshConstraints() {\n var fieldConstraints;\n this.constraints = []; // Select multiple special treatment\n\n if (this.element.nodeName === 'SELECT') {\n this.actualizeOptions()._bindConstraints();\n\n return this;\n } // Gather all constraints for each input in the multiple group\n\n\n for (var i = 0; i < this.$elements.length; i++) {\n // Check if element have not been dynamically removed since last binding\n if (!$('html').has(this.$elements[i]).length) {\n this.$elements.splice(i, 1);\n continue;\n }\n\n fieldConstraints = this.$elements[i].data('FieldMultiple')._refreshConstraints().constraints;\n\n for (var j = 0; j < fieldConstraints.length; j++) {\n this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);\n }\n }\n\n return this;\n },\n // See `Field.getValue()`\n getValue: function getValue() {\n // Value could be overriden in DOM\n if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value; // Radio input case\n\n if (this.element.nodeName === 'INPUT') {\n var type = Utils.getType(this.element);\n if (type === 'radio') return this._findRelated().filter(':checked').val() || ''; // checkbox input case\n\n if (type === 'checkbox') {\n var values = [];\n\n this._findRelated().filter(':checked').each(function () {\n values.push($(this).val());\n });\n\n return values;\n }\n } // Select multiple case\n\n\n if (this.element.nodeName === 'SELECT' && null === this.$element.val()) return []; // Default case that should never happen\n\n return this.$element.val();\n },\n _init: function _init() {\n this.$elements = [this.$element];\n return this;\n }\n };\n\n var Factory = function Factory(element, options, parsleyFormInstance) {\n this.element = element;\n this.$element = $(element); // If the element has already been bound, returns its saved Parsley instance\n\n var savedparsleyFormInstance = this.$element.data('Parsley');\n\n if (savedparsleyFormInstance) {\n // If the saved instance has been bound without a Form parent and there is one given in this call, add it\n if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {\n savedparsleyFormInstance.parent = parsleyFormInstance;\n\n savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);\n }\n\n if ('object' === _typeof(options)) {\n _extends(savedparsleyFormInstance.options, options);\n }\n\n return savedparsleyFormInstance;\n } // Parsley must be instantiated with a DOM element or jQuery $element\n\n\n if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');\n if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');\n this.parent = parsleyFormInstance || window.Parsley;\n return this.init(options);\n };\n\n Factory.prototype = {\n init: function init(options) {\n this.__class__ = 'Parsley';\n this.__version__ = '2.9.2';\n this.__id__ = Utils.generateID(); // Pre-compute options\n\n this._resetOptions(options); // A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute\n\n\n if (this.element.nodeName === 'FORM' || Utils.checkAttr(this.element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm'); // Every other element is bound as a `Field` or `FieldMultiple`\n\n return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');\n },\n isMultiple: function isMultiple() {\n var type = Utils.getType(this.element);\n return type === 'radio' || type === 'checkbox' || this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple');\n },\n // Multiples fields are a real nightmare :(\n // Maybe some refactoring would be appreciated here...\n handleMultiple: function handleMultiple() {\n var _this = this;\n\n var name;\n var parsleyMultipleInstance; // Handle multiple name\n\n this.options.multiple = this.options.multiple || (name = this.element.getAttribute('name')) || this.element.getAttribute('id'); // Special select multiple input\n\n if (this.element.nodeName === 'SELECT' && null !== this.element.getAttribute('multiple')) {\n this.options.multiple = this.options.multiple || this.__id__;\n return this.bind('parsleyFieldMultiple'); // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it\n } else if (!this.options.multiple) {\n Utils.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);\n return this;\n } // Remove special chars\n\n\n this.options.multiple = this.options.multiple.replace(/(:|\\.|\\[|\\]|\\{|\\}|\\$)/g, ''); // Add proper `data-parsley-multiple` to siblings if we have a valid multiple name\n\n if (name) {\n $('input[name=\"' + name + '\"]').each(function (i, input) {\n var type = Utils.getType(input);\n if (type === 'radio' || type === 'checkbox') input.setAttribute(_this.options.namespace + 'multiple', _this.options.multiple);\n });\n } // Check here if we don't already have a related multiple instance saved\n\n\n var $previouslyRelated = this._findRelated();\n\n for (var i = 0; i < $previouslyRelated.length; i++) {\n parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');\n\n if ('undefined' !== typeof parsleyMultipleInstance) {\n if (!this.$element.data('FieldMultiple')) {\n parsleyMultipleInstance.addElement(this.$element);\n }\n\n break;\n }\n } // Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`\n // And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance\n\n\n this.bind('parsleyField', true);\n return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');\n },\n // Return proper `Form`, `Field` or `FieldMultiple`\n bind: function bind(type, doNotStore) {\n var parsleyInstance;\n\n switch (type) {\n case 'parsleyForm':\n parsleyInstance = $.extend(new Form(this.element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();\n break;\n\n case 'parsleyField':\n parsleyInstance = $.extend(new Field(this.element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);\n break;\n\n case 'parsleyFieldMultiple':\n parsleyInstance = $.extend(new Field(this.element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();\n break;\n\n default:\n throw new Error(type + 'is not a supported Parsley type');\n }\n\n if (this.options.multiple) Utils.setAttr(this.element, this.options.namespace, 'multiple', this.options.multiple);\n\n if ('undefined' !== typeof doNotStore) {\n this.$element.data('FieldMultiple', parsleyInstance);\n return parsleyInstance;\n } // Store the freshly bound instance in a DOM element for later access using jQuery `data()`\n\n\n this.$element.data('Parsley', parsleyInstance); // Tell the world we have a new Form or Field instance!\n\n parsleyInstance._actualizeTriggers();\n\n parsleyInstance._trigger('init');\n\n return parsleyInstance;\n }\n };\n\n var vernums = $.fn.jquery.split('.');\n\n if (parseInt(vernums[0]) <= 1 && parseInt(vernums[1]) < 8) {\n throw \"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.\";\n }\n\n if (!vernums.forEach) {\n Utils.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');\n } // Inherit `on`, `off` & `trigger` to Parsley:\n\n\n var Parsley = _extends(new Base(), {\n element: document,\n $element: $(document),\n actualizeOptions: null,\n _resetOptions: null,\n Factory: Factory,\n version: '2.9.2'\n }); // Supplement Field and Form with Base\n // This way, the constructors will have access to those methods\n\n\n _extends(Field.prototype, UI.Field, Base.prototype);\n\n _extends(Form.prototype, UI.Form, Base.prototype); // Inherit actualizeOptions and _resetOptions:\n\n\n _extends(Factory.prototype, Base.prototype); // ### jQuery API\n // `$('.elem').parsley(options)` or `$('.elem').psly(options)`\n\n\n $.fn.parsley = $.fn.psly = function (options) {\n if (this.length > 1) {\n var instances = [];\n this.each(function () {\n instances.push($(this).parsley(options));\n });\n return instances;\n } // Return undefined if applied to non existing DOM element\n\n\n if (this.length == 0) {\n return;\n }\n\n return new Factory(this[0], options);\n }; // ### Field and Form extension\n // Ensure the extension is now defined if it wasn't previously\n\n\n if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {}; // ### Parsley config\n // Inherit from ParsleyDefault, and copy over any existing values\n\n Parsley.options = _extends(Utils.objectCreate(Defaults), window.ParsleyConfig);\n window.ParsleyConfig = Parsley.options; // Old way of accessing global options\n // ### Globals\n\n window.Parsley = window.psly = Parsley;\n Parsley.Utils = Utils;\n window.ParsleyUtils = {};\n $.each(Utils, function (key, value) {\n if ('function' === typeof value) {\n window.ParsleyUtils[key] = function () {\n Utils.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');\n return Utils[key].apply(Utils, arguments);\n };\n }\n }); // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley\n\n var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);\n window.ParsleyValidator = {};\n $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator hasValidator'.split(' '), function (i, method) {\n window.Parsley[method] = function () {\n return registry[method].apply(registry, arguments);\n };\n\n window.ParsleyValidator[method] = function () {\n var _window$Parsley;\n\n Utils.warnOnce(\"Accessing the method '\".concat(method, \"' through Validator is deprecated. Simply call 'window.Parsley.\").concat(method, \"(...)'\"));\n return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);\n };\n }); // ### UI\n // Deprecated global object\n\n window.Parsley.UI = UI;\n window.ParsleyUI = {\n removeError: function removeError(instance, name, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n Utils.warnOnce(\"Accessing UI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method.\");\n return instance.removeError(name, {\n updateClass: updateClass\n });\n },\n getErrorsMessages: function getErrorsMessages(instance) {\n Utils.warnOnce(\"Accessing UI is deprecated. Call 'getErrorsMessages' on the instance directly.\");\n return instance.getErrorsMessages();\n }\n };\n $.each('addError updateError'.split(' '), function (i, method) {\n window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n Utils.warnOnce(\"Accessing UI is deprecated. Call '\".concat(method, \"' on the instance directly. Please comment in issue 1073 as to your need to call this method.\"));\n return instance[method](name, {\n message: message,\n assert: assert,\n updateClass: updateClass\n });\n };\n }); // ### PARSLEY auto-binding\n // Prevent it by setting `ParsleyConfig.autoBind` to `false`\n\n if (false !== window.ParsleyConfig.autoBind) {\n $(function () {\n // Works only on `data-parsley-validate`.\n if ($('[data-parsley-validate]').length) $('[data-parsley-validate]').parsley();\n });\n }\n\n var o = $({});\n\n var deprecated = function deprecated() {\n Utils.warnOnce(\"Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley\");\n }; // Returns an event handler that calls `fn` with the arguments it expects\n\n\n function adapt(fn, context) {\n // Store to allow unbinding\n if (!fn.parsleyAdaptedCallback) {\n fn.parsleyAdaptedCallback = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(this);\n fn.apply(context || o, args);\n };\n }\n\n return fn.parsleyAdaptedCallback;\n }\n\n var eventPrefix = 'parsley:'; // Converts 'parsley:form:validate' into 'form:validate'\n\n function eventName(name) {\n if (name.lastIndexOf(eventPrefix, 0) === 0) return name.substr(eventPrefix.length);\n return name;\n } // $.listen is deprecated. Use Parsley.on instead.\n\n\n $.listen = function (name, callback) {\n var context;\n deprecated();\n\n if ('object' === _typeof(arguments[1]) && 'function' === typeof arguments[2]) {\n context = arguments[1];\n callback = arguments[2];\n }\n\n if ('function' !== typeof callback) throw new Error('Wrong parameters');\n window.Parsley.on(eventName(name), adapt(callback, context));\n };\n\n $.listenTo = function (instance, name, fn) {\n deprecated();\n if (!(instance instanceof Field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');\n instance.on(eventName(name), adapt(fn));\n };\n\n $.unsubscribe = function (name, fn) {\n deprecated();\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong arguments');\n window.Parsley.off(eventName(name), fn.parsleyAdaptedCallback);\n };\n\n $.unsubscribeTo = function (instance, name) {\n deprecated();\n if (!(instance instanceof Field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');\n instance.off(eventName(name));\n };\n\n $.unsubscribeAll = function (name) {\n deprecated();\n window.Parsley.off(eventName(name));\n $('form,input,textarea,select').each(function () {\n var instance = $(this).data('Parsley');\n\n if (instance) {\n instance.off(eventName(name));\n }\n });\n }; // $.emit is deprecated. Use jQuery events instead.\n\n\n $.emit = function (name, instance) {\n var _instance;\n\n deprecated();\n var instanceGiven = instance instanceof Field || instance instanceof Form;\n var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);\n args.unshift(eventName(name));\n\n if (!instanceGiven) {\n instance = window.Parsley;\n }\n\n (_instance = instance).trigger.apply(_instance, _toConsumableArray(args));\n };\n\n $.extend(true, Parsley, {\n asyncValidators: {\n 'default': {\n fn: function fn(xhr) {\n // By default, only status 2xx are deemed successful.\n // Note: we use status instead of state() because responses with status 200\n // but invalid messages (e.g. an empty body for content type set to JSON) will\n // result in state() === 'rejected'.\n return xhr.status >= 200 && xhr.status < 300;\n },\n url: false\n },\n reverse: {\n fn: function fn(xhr) {\n // If reverse option is set, a failing ajax request is considered successful\n return xhr.status < 200 || xhr.status >= 300;\n },\n url: false\n }\n },\n addAsyncValidator: function addAsyncValidator(name, fn, url, options) {\n Parsley.asyncValidators[name] = {\n fn: fn,\n url: url || false,\n options: options || {}\n };\n return this;\n }\n });\n Parsley.addValidator('remote', {\n requirementType: {\n '': 'string',\n 'validator': 'string',\n 'reverse': 'boolean',\n 'options': 'object'\n },\n validateString: function validateString(value, url, options, instance) {\n var data = {};\n var ajaxOptions;\n var csr;\n var validator = options.validator || (true === options.reverse ? 'reverse' : 'default');\n if ('undefined' === typeof Parsley.asyncValidators[validator]) throw new Error('Calling an undefined async validator: `' + validator + '`');\n url = Parsley.asyncValidators[validator].url || url; // Fill current value\n\n if (url.indexOf('{value}') > -1) {\n url = url.replace('{value}', encodeURIComponent(value));\n } else {\n data[instance.element.getAttribute('name') || instance.element.getAttribute('id')] = value;\n } // Merge options passed in from the function with the ones in the attribute\n\n\n var remoteOptions = $.extend(true, options.options || {}, Parsley.asyncValidators[validator].options); // All `$.ajax(options)` could be overridden or extended directly from DOM in `data-parsley-remote-options`\n\n ajaxOptions = $.extend(true, {}, {\n url: url,\n data: data,\n type: 'GET'\n }, remoteOptions); // Generate store key based on ajax options\n\n instance.trigger('field:ajaxoptions', instance, ajaxOptions);\n csr = $.param(ajaxOptions); // Initialise querry cache\n\n if ('undefined' === typeof Parsley._remoteCache) Parsley._remoteCache = {}; // Try to retrieve stored xhr\n\n var xhr = Parsley._remoteCache[csr] = Parsley._remoteCache[csr] || $.ajax(ajaxOptions);\n\n var handleXhr = function handleXhr() {\n var result = Parsley.asyncValidators[validator].fn.call(instance, xhr, url, options);\n if (!result) // Map falsy results to rejected promise\n result = $.Deferred().reject();\n return $.when(result);\n };\n\n return xhr.then(handleXhr, handleXhr);\n },\n priority: -1\n });\n Parsley.on('form:submit', function () {\n Parsley._remoteCache = {};\n });\n\n Base.prototype.addAsyncValidator = function () {\n Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');\n return Parsley.addAsyncValidator.apply(Parsley, arguments);\n };\n\n // This is included with the Parsley library itself,\n Parsley.addMessages('en', {\n defaultMessage: \"This value seems to be invalid.\",\n type: {\n email: \"This value should be a valid email.\",\n url: \"This value should be a valid url.\",\n number: \"This value should be a valid number.\",\n integer: \"This value should be a valid integer.\",\n digits: \"This value should be digits.\",\n alphanum: \"This value should be alphanumeric.\"\n },\n notblank: \"This value should not be blank.\",\n required: \"This value is required.\",\n pattern: \"This value seems to be invalid.\",\n min: \"This value should be greater than or equal to %s.\",\n max: \"This value should be lower than or equal to %s.\",\n range: \"This value should be between %s and %s.\",\n minlength: \"This value is too short. It should have %s characters or more.\",\n maxlength: \"This value is too long. It should have %s characters or fewer.\",\n length: \"This value length is invalid. It should be between %s and %s characters long.\",\n mincheck: \"You must select at least %s choices.\",\n maxcheck: \"You must select %s choices or fewer.\",\n check: \"You must select between %s and %s choices.\",\n equalto: \"This value should be the same.\",\n euvatin: \"It's not a valid VAT Identification Number.\"\n });\n Parsley.setLocale('en');\n\n function InputEvent() {\n var _this = this;\n\n var globals = window || global; // Slightly odd way construct our object. This way methods are force bound.\n // Used to test for duplicate library.\n\n _extends(this, {\n // For browsers that do not support isTrusted, assumes event is native.\n isNativeEvent: function isNativeEvent(evt) {\n return evt.originalEvent && evt.originalEvent.isTrusted !== false;\n },\n fakeInputEvent: function fakeInputEvent(evt) {\n if (_this.isNativeEvent(evt)) {\n $(evt.target).trigger('input');\n }\n },\n misbehaves: function misbehaves(evt) {\n if (_this.isNativeEvent(evt)) {\n _this.behavesOk(evt);\n\n $(document).on('change.inputevent', evt.data.selector, _this.fakeInputEvent);\n\n _this.fakeInputEvent(evt);\n }\n },\n behavesOk: function behavesOk(evt) {\n if (_this.isNativeEvent(evt)) {\n $(document) // Simply unbinds the testing handler\n .off('input.inputevent', evt.data.selector, _this.behavesOk).off('change.inputevent', evt.data.selector, _this.misbehaves);\n }\n },\n // Bind the testing handlers\n install: function install() {\n if (globals.inputEventPatched) {\n return;\n }\n\n globals.inputEventPatched = '0.0.3';\n\n for (var _i = 0, _arr = ['select', 'input[type=\"checkbox\"]', 'input[type=\"radio\"]', 'input[type=\"file\"]']; _i < _arr.length; _i++) {\n var selector = _arr[_i];\n $(document).on('input.inputevent', selector, {\n selector: selector\n }, _this.behavesOk).on('change.inputevent', selector, {\n selector: selector\n }, _this.misbehaves);\n }\n },\n uninstall: function uninstall() {\n delete globals.inputEventPatched;\n $(document).off('.inputevent');\n }\n });\n }\n var inputevent = new InputEvent();\n\n inputevent.install();\n\n return Parsley;\n\n})));\n//# sourceMappingURL=parsley.js.map\n","/*!\n * Bootstrap selector-engine.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(',').map(sel => index_js.parseSelector(sel)).join(',') : null;\n };\n const SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !index_js.isDisabled(el) && index_js.isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n };\n\n return SelectorEngine;\n\n}));\n//# sourceMappingURL=selector-engine.js.map\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/*\n _ _ _ _\n ___| (_) ___| | __ (_)___\n/ __| | |/ __| |/ / | / __|\n\\__ \\ | | (__| < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.8.1\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n\n}(function($) {\n 'use strict';\n var Slick = window.Slick || {};\n\n Slick = (function() {\n\n var instanceUid = 0;\n\n function Slick(element, settings) {\n\n var _ = this, dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function(slider, i) {\n return $('<button type=\"button\" />').text(i + 1);\n },\n dots: false,\n dotsClass: 'slick-dots',\n draggable: true,\n easing: 'linear',\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n focusOnChange: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: 'ondemand',\n mobileFirst: false,\n pauseOnHover: true,\n pauseOnFocus: true,\n pauseOnDotsHover: false,\n respondTo: 'window',\n responsive: null,\n rows: 1,\n rtl: false,\n slide: '',\n slidesPerRow: 1,\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 500,\n swipe: true,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n verticalSwiping: false,\n waitForAnimate: true,\n zIndex: 1000\n };\n\n _.initials = {\n animating: false,\n dragging: false,\n autoPlayTimer: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n $dots: null,\n listWidth: null,\n listHeight: null,\n loadIndex: 0,\n $nextArrow: null,\n $prevArrow: null,\n scrolling: false,\n slideCount: null,\n slideWidth: null,\n $slideTrack: null,\n $slides: null,\n sliding: false,\n slideOffset: 0,\n swipeLeft: null,\n swiping: false,\n $list: null,\n touchObject: {},\n transformsEnabled: false,\n unslicked: false\n };\n\n $.extend(_, _.initials);\n\n _.activeBreakpoint = null;\n _.animType = null;\n _.animProp = null;\n _.breakpoints = [];\n _.breakpointSettings = [];\n _.cssTransitions = false;\n _.focussed = false;\n _.interrupted = false;\n _.hidden = 'hidden';\n _.paused = true;\n _.positionProp = null;\n _.respondTo = null;\n _.rowCount = 1;\n _.shouldClick = true;\n _.$slider = $(element);\n _.$slidesCache = null;\n _.transformType = null;\n _.transitionType = null;\n _.visibilityChange = 'visibilitychange';\n _.windowWidth = 0;\n _.windowTimer = null;\n\n dataSettings = $(element).data('slick') || {};\n\n _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n _.currentSlide = _.options.initialSlide;\n\n _.originalSettings = _.options;\n\n if (typeof document.mozHidden !== 'undefined') {\n _.hidden = 'mozHidden';\n _.visibilityChange = 'mozvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n _.hidden = 'webkitHidden';\n _.visibilityChange = 'webkitvisibilitychange';\n }\n\n _.autoPlay = $.proxy(_.autoPlay, _);\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n _.changeSlide = $.proxy(_.changeSlide, _);\n _.clickHandler = $.proxy(_.clickHandler, _);\n _.selectHandler = $.proxy(_.selectHandler, _);\n _.setPosition = $.proxy(_.setPosition, _);\n _.swipeHandler = $.proxy(_.swipeHandler, _);\n _.dragHandler = $.proxy(_.dragHandler, _);\n _.keyHandler = $.proxy(_.keyHandler, _);\n\n _.instanceUid = instanceUid++;\n\n // A simple way to check for HTML strings\n // Strict HTML recognition (must start with <)\n // Extracted from jQuery v1.11 source\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n _.registerBreakpoints();\n _.init(true);\n\n }\n\n return Slick;\n\n }());\n\n Slick.prototype.activateADA = function() {\n var _ = this;\n\n _.$slideTrack.find('.slick-active').attr({\n 'aria-hidden': 'false'\n }).find('a, input, button, select').attr({\n 'tabindex': '0'\n });\n\n };\n\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n addBefore = index;\n index = null;\n } else if (index < 0 || (index >= _.slideCount)) {\n return false;\n }\n\n _.unload();\n\n if (typeof(index) === 'number') {\n if (index === 0 && _.$slides.length === 0) {\n $(markup).appendTo(_.$slideTrack);\n } else if (addBefore) {\n $(markup).insertBefore(_.$slides.eq(index));\n } else {\n $(markup).insertAfter(_.$slides.eq(index));\n }\n } else {\n if (addBefore === true) {\n $(markup).prependTo(_.$slideTrack);\n } else {\n $(markup).appendTo(_.$slideTrack);\n }\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slides.each(function(index, element) {\n $(element).attr('data-slick-index', index);\n });\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.animateHeight = function() {\n var _ = this;\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.animate({\n height: targetHeight\n }, _.options.speed);\n }\n };\n\n Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n var animProps = {},\n _ = this;\n\n _.animateHeight();\n\n if (_.options.rtl === true && _.options.vertical === false) {\n targetLeft = -targetLeft;\n }\n if (_.transformsEnabled === false) {\n if (_.options.vertical === false) {\n _.$slideTrack.animate({\n left: targetLeft\n }, _.options.speed, _.options.easing, callback);\n } else {\n _.$slideTrack.animate({\n top: targetLeft\n }, _.options.speed, _.options.easing, callback);\n }\n\n } else {\n\n if (_.cssTransitions === false) {\n if (_.options.rtl === true) {\n _.currentLeft = -(_.currentLeft);\n }\n $({\n animStart: _.currentLeft\n }).animate({\n animStart: targetLeft\n }, {\n duration: _.options.speed,\n easing: _.options.easing,\n step: function(now) {\n now = Math.ceil(now);\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate(' +\n now + 'px, 0px)';\n _.$slideTrack.css(animProps);\n } else {\n animProps[_.animType] = 'translate(0px,' +\n now + 'px)';\n _.$slideTrack.css(animProps);\n }\n },\n complete: function() {\n if (callback) {\n callback.call();\n }\n }\n });\n\n } else {\n\n _.applyTransition();\n targetLeft = Math.ceil(targetLeft);\n\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n } else {\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n }\n _.$slideTrack.css(animProps);\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition();\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n }\n\n };\n\n Slick.prototype.getNavTarget = function() {\n\n var _ = this,\n asNavFor = _.options.asNavFor;\n\n if ( asNavFor && asNavFor !== null ) {\n asNavFor = $(asNavFor).not(_.$slider);\n }\n\n return asNavFor;\n\n };\n\n Slick.prototype.asNavFor = function(index) {\n\n var _ = this,\n asNavFor = _.getNavTarget();\n\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n asNavFor.each(function() {\n var target = $(this).slick('getSlick');\n if(!target.unslicked) {\n target.slideHandler(index, true);\n }\n });\n }\n\n };\n\n Slick.prototype.applyTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n if (_.options.fade === false) {\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n } else {\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n }\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.autoPlay = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n\n if ( _.slideCount > _.options.slidesToShow ) {\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n }\n\n };\n\n Slick.prototype.autoPlayClear = function() {\n\n var _ = this;\n\n if (_.autoPlayTimer) {\n clearInterval(_.autoPlayTimer);\n }\n\n };\n\n Slick.prototype.autoPlayIterator = function() {\n\n var _ = this,\n slideTo = _.currentSlide + _.options.slidesToScroll;\n\n if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n if ( _.options.infinite === false ) {\n\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n _.direction = 0;\n }\n\n else if ( _.direction === 0 ) {\n\n slideTo = _.currentSlide - _.options.slidesToScroll;\n\n if ( _.currentSlide - 1 === 0 ) {\n _.direction = 1;\n }\n\n }\n\n }\n\n _.slideHandler( slideTo );\n\n }\n\n };\n\n Slick.prototype.buildArrows = function() {\n\n var _ = this;\n\n if (_.options.arrows === true ) {\n\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n if( _.slideCount > _.options.slidesToShow ) {\n\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n if (_.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.prependTo(_.options.appendArrows);\n }\n\n if (_.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.appendTo(_.options.appendArrows);\n }\n\n if (_.options.infinite !== true) {\n _.$prevArrow\n .addClass('slick-disabled')\n .attr('aria-disabled', 'true');\n }\n\n } else {\n\n _.$prevArrow.add( _.$nextArrow )\n\n .addClass('slick-hidden')\n .attr({\n 'aria-disabled': 'true',\n 'tabindex': '-1'\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.buildDots = function() {\n\n var _ = this,\n i, dot;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$slider.addClass('slick-dotted');\n\n dot = $('<ul />').addClass(_.options.dotsClass);\n\n for (i = 0; i <= _.getDotCount(); i += 1) {\n dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n }\n\n _.$dots = dot.appendTo(_.options.appendDots);\n\n _.$dots.find('li').first().addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.buildOut = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slider\n .children( _.options.slide + ':not(.slick-cloned)')\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n _.$slides.each(function(index, element) {\n $(element)\n .attr('data-slick-index', index)\n .data('originalStyling', $(element).attr('style') || '');\n });\n\n _.$slider.addClass('slick-slider');\n\n _.$slideTrack = (_.slideCount === 0) ?\n $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n _.$list = _.$slideTrack.wrap(\n '<div class=\"slick-list\"/>').parent();\n _.$slideTrack.css('opacity', 0);\n\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n _.options.slidesToScroll = 1;\n }\n\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n _.setupInfinite();\n\n _.buildArrows();\n\n _.buildDots();\n\n _.updateDots();\n\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n if (_.options.draggable === true) {\n _.$list.addClass('draggable');\n }\n\n };\n\n Slick.prototype.buildRows = function() {\n\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n newSlides = document.createDocumentFragment();\n originalSlides = _.$slider.children();\n\n if(_.options.rows > 0) {\n\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\n numOfSlides = Math.ceil(\n originalSlides.length / slidesPerSection\n );\n\n for(a = 0; a < numOfSlides; a++){\n var slide = document.createElement('div');\n for(b = 0; b < _.options.rows; b++) {\n var row = document.createElement('div');\n for(c = 0; c < _.options.slidesPerRow; c++) {\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n if (originalSlides.get(target)) {\n row.appendChild(originalSlides.get(target));\n }\n }\n slide.appendChild(row);\n }\n newSlides.appendChild(slide);\n }\n\n _.$slider.empty().append(newSlides);\n _.$slider.children().children().children()\n .css({\n 'width':(100 / _.options.slidesPerRow) + '%',\n 'display': 'inline-block'\n });\n\n }\n\n };\n\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n var _ = this,\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n var sliderWidth = _.$slider.width();\n var windowWidth = window.innerWidth || $(window).width();\n\n if (_.respondTo === 'window') {\n respondToWidth = windowWidth;\n } else if (_.respondTo === 'slider') {\n respondToWidth = sliderWidth;\n } else if (_.respondTo === 'min') {\n respondToWidth = Math.min(windowWidth, sliderWidth);\n }\n\n if ( _.options.responsive &&\n _.options.responsive.length &&\n _.options.responsive !== null) {\n\n targetBreakpoint = null;\n\n for (breakpoint in _.breakpoints) {\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\n if (_.originalSettings.mobileFirst === false) {\n if (respondToWidth < _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n } else {\n if (respondToWidth > _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n }\n }\n }\n\n if (targetBreakpoint !== null) {\n if (_.activeBreakpoint !== null) {\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n _.activeBreakpoint =\n targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n _.activeBreakpoint = targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n if (_.activeBreakpoint !== null) {\n _.activeBreakpoint = null;\n _.options = _.originalSettings;\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n triggerBreakpoint = targetBreakpoint;\n }\n }\n\n // only trigger breakpoints during an actual break. not on initialize.\n if( !initial && triggerBreakpoint !== false ) {\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n }\n }\n\n };\n\n Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n var _ = this,\n $target = $(event.currentTarget),\n indexOffset, slideOffset, unevenOffset;\n\n // If target is a link, prevent default action.\n if($target.is('a')) {\n event.preventDefault();\n }\n\n // If target is not the <li> element (ie: a child), find the <li>.\n if(!$target.is('li')) {\n $target = $target.closest('li');\n }\n\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n switch (event.data.message) {\n\n case 'previous':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n }\n break;\n\n case 'next':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n }\n break;\n\n case 'index':\n var index = event.data.index === 0 ? 0 :\n event.data.index || $target.index() * _.options.slidesToScroll;\n\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n $target.children().trigger('focus');\n break;\n\n default:\n return;\n }\n\n };\n\n Slick.prototype.checkNavigable = function(index) {\n\n var _ = this,\n navigables, prevNavigable;\n\n navigables = _.getNavigableIndexes();\n prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n };\n\n Slick.prototype.cleanUpEvents = function() {\n\n var _ = this;\n\n if (_.options.dots && _.$dots !== null) {\n\n $('li', _.$dots)\n .off('click.slick', _.changeSlide)\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n if (_.options.accessibility === true) {\n _.$dots.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$slider.off('focus.slick blur.slick');\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n _.$list.off('click.slick', _.clickHandler);\n\n $(document).off(_.visibilityChange, _.visibility);\n\n _.cleanUpSlideEvents();\n\n if (_.options.accessibility === true) {\n _.$list.off('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n }\n\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n };\n\n Slick.prototype.cleanUpSlideEvents = function() {\n\n var _ = this;\n\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n };\n\n Slick.prototype.cleanUpRows = function() {\n\n var _ = this, originalSlides;\n\n if(_.options.rows > 0) {\n originalSlides = _.$slides.children().children();\n originalSlides.removeAttr('style');\n _.$slider.empty().append(originalSlides);\n }\n\n };\n\n Slick.prototype.clickHandler = function(event) {\n\n var _ = this;\n\n if (_.shouldClick === false) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n\n };\n\n Slick.prototype.destroy = function(refresh) {\n\n var _ = this;\n\n _.autoPlayClear();\n\n _.touchObject = {};\n\n _.cleanUpEvents();\n\n $('.slick-cloned', _.$slider).detach();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if ( _.$prevArrow && _.$prevArrow.length ) {\n\n _.$prevArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.prevArrow )) {\n _.$prevArrow.remove();\n }\n }\n\n if ( _.$nextArrow && _.$nextArrow.length ) {\n\n _.$nextArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.nextArrow )) {\n _.$nextArrow.remove();\n }\n }\n\n\n if (_.$slides) {\n\n _.$slides\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n .removeAttr('aria-hidden')\n .removeAttr('data-slick-index')\n .each(function(){\n $(this).attr('style', $(this).data('originalStyling'));\n });\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.detach();\n\n _.$list.detach();\n\n _.$slider.append(_.$slides);\n }\n\n _.cleanUpRows();\n\n _.$slider.removeClass('slick-slider');\n _.$slider.removeClass('slick-initialized');\n _.$slider.removeClass('slick-dotted');\n\n _.unslicked = true;\n\n if(!refresh) {\n _.$slider.trigger('destroy', [_]);\n }\n\n };\n\n Slick.prototype.disableTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n transition[_.transitionType] = '';\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).css({\n zIndex: _.options.zIndex\n });\n\n _.$slides.eq(slideIndex).animate({\n opacity: 1\n }, _.options.speed, _.options.easing, callback);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 1,\n zIndex: _.options.zIndex\n });\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition(slideIndex);\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n };\n\n Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).animate({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n }, _.options.speed, _.options.easing);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n });\n\n }\n\n };\n\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n var _ = this;\n\n if (filter !== null) {\n\n _.$slidesCache = _.$slides;\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.focusHandler = function() {\n\n var _ = this;\n\n _.$slider\n .off('focus.slick blur.slick')\n .on('focus.slick blur.slick', '*', function(event) {\n\n event.stopImmediatePropagation();\n var $sf = $(this);\n\n setTimeout(function() {\n\n if( _.options.pauseOnFocus ) {\n _.focussed = $sf.is(':focus');\n _.autoPlay();\n }\n\n }, 0);\n\n });\n };\n\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n var _ = this;\n return _.currentSlide;\n\n };\n\n Slick.prototype.getDotCount = function() {\n\n var _ = this;\n\n var breakPoint = 0;\n var counter = 0;\n var pagerQty = 0;\n\n if (_.options.infinite === true) {\n if (_.slideCount <= _.options.slidesToShow) {\n ++pagerQty;\n } else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n } else if (_.options.centerMode === true) {\n pagerQty = _.slideCount;\n } else if(!_.options.asNavFor) {\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n }else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n\n return pagerQty - 1;\n\n };\n\n Slick.prototype.getLeft = function(slideIndex) {\n\n var _ = this,\n targetLeft,\n verticalHeight,\n verticalOffset = 0,\n targetSlide,\n coef;\n\n _.slideOffset = 0;\n verticalHeight = _.$slides.first().outerHeight(true);\n\n if (_.options.infinite === true) {\n if (_.slideCount > _.options.slidesToShow) {\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n coef = -1\n\n if (_.options.vertical === true && _.options.centerMode === true) {\n if (_.options.slidesToShow === 2) {\n coef = -1.5;\n } else if (_.options.slidesToShow === 1) {\n coef = -2\n }\n }\n verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n }\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n if (slideIndex > _.slideCount) {\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n } else {\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n }\n }\n }\n } else {\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n }\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.slideOffset = 0;\n verticalOffset = 0;\n }\n\n if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n } else if (_.options.centerMode === true && _.options.infinite === true) {\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n } else if (_.options.centerMode === true) {\n _.slideOffset = 0;\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n }\n\n if (_.options.vertical === false) {\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n } else {\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n }\n\n if (_.options.variableWidth === true) {\n\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n if (_.options.centerMode === true) {\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n }\n }\n\n return targetLeft;\n\n };\n\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n var _ = this;\n\n return _.options[option];\n\n };\n\n Slick.prototype.getNavigableIndexes = function() {\n\n var _ = this,\n breakPoint = 0,\n counter = 0,\n indexes = [],\n max;\n\n if (_.options.infinite === false) {\n max = _.slideCount;\n } else {\n breakPoint = _.options.slidesToScroll * -1;\n counter = _.options.slidesToScroll * -1;\n max = _.slideCount * 2;\n }\n\n while (breakPoint < max) {\n indexes.push(breakPoint);\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n\n return indexes;\n\n };\n\n Slick.prototype.getSlick = function() {\n\n return this;\n\n };\n\n Slick.prototype.getSlideCount = function() {\n\n var _ = this,\n slidesTraversed, swipedSlide, centerOffset;\n\n centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n if (_.options.swipeToSlide === true) {\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n swipedSlide = slide;\n return false;\n }\n });\n\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n return slidesTraversed;\n\n } else {\n return _.options.slidesToScroll;\n }\n\n };\n\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'index',\n index: parseInt(slide)\n }\n }, dontAnimate);\n\n };\n\n Slick.prototype.init = function(creation) {\n\n var _ = this;\n\n if (!$(_.$slider).hasClass('slick-initialized')) {\n\n $(_.$slider).addClass('slick-initialized');\n\n _.buildRows();\n _.buildOut();\n _.setProps();\n _.startLoad();\n _.loadSlider();\n _.initializeEvents();\n _.updateArrows();\n _.updateDots();\n _.checkResponsive(true);\n _.focusHandler();\n\n }\n\n if (creation) {\n _.$slider.trigger('init', [_]);\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n }\n\n if ( _.options.autoplay ) {\n\n _.paused = false;\n _.autoPlay();\n\n }\n\n };\n\n Slick.prototype.initADA = function() {\n var _ = this,\n numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n return (val >= 0) && (val < _.slideCount);\n });\n\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n }).find('a, input, button, select').attr({\n 'tabindex': '-1'\n });\n\n if (_.$dots !== null) {\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n var slideControlIndex = tabControlIndexes.indexOf(i);\n\n $(this).attr({\n 'role': 'tabpanel',\n 'id': 'slick-slide' + _.instanceUid + i,\n 'tabindex': -1\n });\n\n if (slideControlIndex !== -1) {\n var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n if ($('#' + ariaButtonControl).length) {\n $(this).attr({\n 'aria-describedby': ariaButtonControl\n });\n }\n }\n });\n\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n var mappedSlideIndex = tabControlIndexes[i];\n\n $(this).attr({\n 'role': 'presentation'\n });\n\n $(this).find('button').first().attr({\n 'role': 'tab',\n 'id': 'slick-slide-control' + _.instanceUid + i,\n 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n 'aria-label': (i + 1) + ' of ' + numDotGroups,\n 'aria-selected': null,\n 'tabindex': '-1'\n });\n\n }).eq(_.currentSlide).find('button').attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n }).end();\n }\n\n for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n if (_.options.focusOnChange) {\n _.$slides.eq(i).attr({'tabindex': '0'});\n } else {\n _.$slides.eq(i).removeAttr('tabindex');\n }\n }\n\n _.activateADA();\n\n };\n\n Slick.prototype.initArrowEvents = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'previous'\n }, _.changeSlide);\n _.$nextArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'next'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow.on('keydown.slick', _.keyHandler);\n _.$nextArrow.on('keydown.slick', _.keyHandler);\n }\n }\n\n };\n\n Slick.prototype.initDotEvents = function() {\n\n var _ = this;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n $('li', _.$dots).on('click.slick', {\n message: 'index'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$dots.on('keydown.slick', _.keyHandler);\n }\n }\n\n if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n $('li', _.$dots)\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initSlideEvents = function() {\n\n var _ = this;\n\n if ( _.options.pauseOnHover ) {\n\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initializeEvents = function() {\n\n var _ = this;\n\n _.initArrowEvents();\n\n _.initDotEvents();\n _.initSlideEvents();\n\n _.$list.on('touchstart.slick mousedown.slick', {\n action: 'start'\n }, _.swipeHandler);\n _.$list.on('touchmove.slick mousemove.slick', {\n action: 'move'\n }, _.swipeHandler);\n _.$list.on('touchend.slick mouseup.slick', {\n action: 'end'\n }, _.swipeHandler);\n _.$list.on('touchcancel.slick mouseleave.slick', {\n action: 'end'\n }, _.swipeHandler);\n\n _.$list.on('click.slick', _.clickHandler);\n\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n if (_.options.accessibility === true) {\n _.$list.on('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n $(_.setPosition);\n\n };\n\n Slick.prototype.initUI = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.show();\n _.$nextArrow.show();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.show();\n\n }\n\n };\n\n Slick.prototype.keyHandler = function(event) {\n\n var _ = this;\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n if (event.keyCode === 37 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'next' : 'previous'\n }\n });\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'previous' : 'next'\n }\n });\n }\n }\n\n };\n\n Slick.prototype.lazyLoad = function() {\n\n var _ = this,\n loadRange, cloneRange, rangeStart, rangeEnd;\n\n function loadImages(imagesScope) {\n\n $('img[data-lazy]', imagesScope).each(function() {\n\n var image = $(this),\n imageSource = $(this).attr('data-lazy'),\n imageSrcSet = $(this).attr('data-srcset'),\n imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n image\n .animate({ opacity: 0 }, 100, function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr('src', imageSource)\n .animate({ opacity: 1 }, 200, function() {\n image\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n });\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n });\n\n };\n\n imageToLoad.onerror = function() {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n };\n\n imageToLoad.src = imageSource;\n\n });\n\n }\n\n if (_.options.centerMode === true) {\n if (_.options.infinite === true) {\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\n } else {\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n }\n } else {\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n if (_.options.fade === true) {\n if (rangeStart > 0) rangeStart--;\n if (rangeEnd <= _.slideCount) rangeEnd++;\n }\n }\n\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n if (_.options.lazyLoad === 'anticipated') {\n var prevSlide = rangeStart - 1,\n nextSlide = rangeEnd,\n $slides = _.$slider.find('.slick-slide');\n\n for (var i = 0; i < _.options.slidesToScroll; i++) {\n if (prevSlide < 0) prevSlide = _.slideCount - 1;\n loadRange = loadRange.add($slides.eq(prevSlide));\n loadRange = loadRange.add($slides.eq(nextSlide));\n prevSlide--;\n nextSlide++;\n }\n }\n\n loadImages(loadRange);\n\n if (_.slideCount <= _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-slide');\n loadImages(cloneRange);\n } else\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n loadImages(cloneRange);\n } else if (_.currentSlide === 0) {\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n loadImages(cloneRange);\n }\n\n };\n\n Slick.prototype.loadSlider = function() {\n\n var _ = this;\n\n _.setPosition();\n\n _.$slideTrack.css({\n opacity: 1\n });\n\n _.$slider.removeClass('slick-loading');\n\n _.initUI();\n\n if (_.options.lazyLoad === 'progressive') {\n _.progressiveLazyLoad();\n }\n\n };\n\n Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'next'\n }\n });\n\n };\n\n Slick.prototype.orientationChange = function() {\n\n var _ = this;\n\n _.checkResponsive();\n _.setPosition();\n\n };\n\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n _.paused = true;\n\n };\n\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n var _ = this;\n\n _.autoPlay();\n _.options.autoplay = true;\n _.paused = false;\n _.focussed = false;\n _.interrupted = false;\n\n };\n\n Slick.prototype.postSlide = function(index) {\n\n var _ = this;\n\n if( !_.unslicked ) {\n\n _.$slider.trigger('afterChange', [_, index]);\n\n _.animating = false;\n\n if (_.slideCount > _.options.slidesToShow) {\n _.setPosition();\n }\n\n _.swipeLeft = null;\n\n if ( _.options.autoplay ) {\n _.autoPlay();\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n\n if (_.options.focusOnChange) {\n var $currentSlide = $(_.$slides.get(_.currentSlide));\n $currentSlide.attr('tabindex', 0).focus();\n }\n }\n\n }\n\n };\n\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'previous'\n }\n });\n\n };\n\n Slick.prototype.preventDefault = function(event) {\n\n event.preventDefault();\n\n };\n\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n tryCount = tryCount || 1;\n\n var _ = this,\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n image,\n imageSource,\n imageSrcSet,\n imageSizes,\n imageToLoad;\n\n if ( $imgsToLoad.length ) {\n\n image = $imgsToLoad.first();\n imageSource = image.attr('data-lazy');\n imageSrcSet = image.attr('data-srcset');\n imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr( 'src', imageSource )\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n\n if ( _.options.adaptiveHeight === true ) {\n _.setPosition();\n }\n\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n _.progressiveLazyLoad();\n\n };\n\n imageToLoad.onerror = function() {\n\n if ( tryCount < 3 ) {\n\n /**\n * try to load the image 3 times,\n * leave a slight delay so we don't get\n * servers blocking the request.\n */\n setTimeout( function() {\n _.progressiveLazyLoad( tryCount + 1 );\n }, 500 );\n\n } else {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n _.progressiveLazyLoad();\n\n }\n\n };\n\n imageToLoad.src = imageSource;\n\n } else {\n\n _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n }\n\n };\n\n Slick.prototype.refresh = function( initializing ) {\n\n var _ = this, currentSlide, lastVisibleIndex;\n\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n // in non-infinite sliders, we don't want to go past the\n // last visible index.\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n _.currentSlide = lastVisibleIndex;\n }\n\n // if less slides than to show, go to start.\n if ( _.slideCount <= _.options.slidesToShow ) {\n _.currentSlide = 0;\n\n }\n\n currentSlide = _.currentSlide;\n\n _.destroy(true);\n\n $.extend(_, _.initials, { currentSlide: currentSlide });\n\n _.init();\n\n if( !initializing ) {\n\n _.changeSlide({\n data: {\n message: 'index',\n index: currentSlide\n }\n }, false);\n\n }\n\n };\n\n Slick.prototype.registerBreakpoints = function() {\n\n var _ = this, breakpoint, currentBreakpoint, l,\n responsiveSettings = _.options.responsive || null;\n\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n _.respondTo = _.options.respondTo || 'window';\n\n for ( breakpoint in responsiveSettings ) {\n\n l = _.breakpoints.length-1;\n\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n // loop through the breakpoints and cut out any existing\n // ones with the same breakpoint number, we don't want dupes.\n while( l >= 0 ) {\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n _.breakpoints.splice(l,1);\n }\n l--;\n }\n\n _.breakpoints.push(currentBreakpoint);\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n }\n\n }\n\n _.breakpoints.sort(function(a, b) {\n return ( _.options.mobileFirst ) ? a-b : b-a;\n });\n\n }\n\n };\n\n Slick.prototype.reinit = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slideTrack\n .children(_.options.slide)\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.currentSlide = 0;\n }\n\n _.registerBreakpoints();\n\n _.setProps();\n _.setupInfinite();\n _.buildArrows();\n _.updateArrows();\n _.initArrowEvents();\n _.buildDots();\n _.updateDots();\n _.initDotEvents();\n _.cleanUpSlideEvents();\n _.initSlideEvents();\n\n _.checkResponsive(false, true);\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n _.setPosition();\n _.focusHandler();\n\n _.paused = !_.options.autoplay;\n _.autoPlay();\n\n _.$slider.trigger('reInit', [_]);\n\n };\n\n Slick.prototype.resize = function() {\n\n var _ = this;\n\n if ($(window).width() !== _.windowWidth) {\n clearTimeout(_.windowDelay);\n _.windowDelay = window.setTimeout(function() {\n _.windowWidth = $(window).width();\n _.checkResponsive();\n if( !_.unslicked ) { _.setPosition(); }\n }, 50);\n }\n };\n\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n removeBefore = index;\n index = removeBefore === true ? 0 : _.slideCount - 1;\n } else {\n index = removeBefore === true ? --index : index;\n }\n\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n return false;\n }\n\n _.unload();\n\n if (removeAll === true) {\n _.$slideTrack.children().remove();\n } else {\n _.$slideTrack.children(this.options.slide).eq(index).remove();\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.setCSS = function(position) {\n\n var _ = this,\n positionProps = {},\n x, y;\n\n if (_.options.rtl === true) {\n position = -position;\n }\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n positionProps[_.positionProp] = position;\n\n if (_.transformsEnabled === false) {\n _.$slideTrack.css(positionProps);\n } else {\n positionProps = {};\n if (_.cssTransitions === false) {\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n _.$slideTrack.css(positionProps);\n } else {\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n _.$slideTrack.css(positionProps);\n }\n }\n\n };\n\n Slick.prototype.setDimensions = function() {\n\n var _ = this;\n\n if (_.options.vertical === false) {\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: ('0px ' + _.options.centerPadding)\n });\n }\n } else {\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: (_.options.centerPadding + ' 0px')\n });\n }\n }\n\n _.listWidth = _.$list.width();\n _.listHeight = _.$list.height();\n\n\n if (_.options.vertical === false && _.options.variableWidth === false) {\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n } else if (_.options.variableWidth === true) {\n _.$slideTrack.width(5000 * _.slideCount);\n } else {\n _.slideWidth = Math.ceil(_.listWidth);\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n }\n\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n };\n\n Slick.prototype.setFade = function() {\n\n var _ = this,\n targetLeft;\n\n _.$slides.each(function(index, element) {\n targetLeft = (_.slideWidth * index) * -1;\n if (_.options.rtl === true) {\n $(element).css({\n position: 'relative',\n right: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n } else {\n $(element).css({\n position: 'relative',\n left: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n }\n });\n\n _.$slides.eq(_.currentSlide).css({\n zIndex: _.options.zIndex - 1,\n opacity: 1\n });\n\n };\n\n Slick.prototype.setHeight = function() {\n\n var _ = this;\n\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.css('height', targetHeight);\n }\n\n };\n\n Slick.prototype.setOption =\n Slick.prototype.slickSetOption = function() {\n\n /**\n * accepts arguments in format of:\n *\n * - for changing a single option's value:\n * .slick(\"setOption\", option, value, refresh )\n *\n * - for changing a set of responsive options:\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n *\n * - for updating multiple values at once (not responsive)\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\n */\n\n var _ = this, l, item, option, value, refresh = false, type;\n\n if( $.type( arguments[0] ) === 'object' ) {\n\n option = arguments[0];\n refresh = arguments[1];\n type = 'multiple';\n\n } else if ( $.type( arguments[0] ) === 'string' ) {\n\n option = arguments[0];\n value = arguments[1];\n refresh = arguments[2];\n\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n type = 'responsive';\n\n } else if ( typeof arguments[1] !== 'undefined' ) {\n\n type = 'single';\n\n }\n\n }\n\n if ( type === 'single' ) {\n\n _.options[option] = value;\n\n\n } else if ( type === 'multiple' ) {\n\n $.each( option , function( opt, val ) {\n\n _.options[opt] = val;\n\n });\n\n\n } else if ( type === 'responsive' ) {\n\n for ( item in value ) {\n\n if( $.type( _.options.responsive ) !== 'array' ) {\n\n _.options.responsive = [ value[item] ];\n\n } else {\n\n l = _.options.responsive.length-1;\n\n // loop through the responsive object and splice out duplicates.\n while( l >= 0 ) {\n\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n _.options.responsive.splice(l,1);\n\n }\n\n l--;\n\n }\n\n _.options.responsive.push( value[item] );\n\n }\n\n }\n\n }\n\n if ( refresh ) {\n\n _.unload();\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.setPosition = function() {\n\n var _ = this;\n\n _.setDimensions();\n\n _.setHeight();\n\n if (_.options.fade === false) {\n _.setCSS(_.getLeft(_.currentSlide));\n } else {\n _.setFade();\n }\n\n _.$slider.trigger('setPosition', [_]);\n\n };\n\n Slick.prototype.setProps = function() {\n\n var _ = this,\n bodyStyle = document.body.style;\n\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n if (_.positionProp === 'top') {\n _.$slider.addClass('slick-vertical');\n } else {\n _.$slider.removeClass('slick-vertical');\n }\n\n if (bodyStyle.WebkitTransition !== undefined ||\n bodyStyle.MozTransition !== undefined ||\n bodyStyle.msTransition !== undefined) {\n if (_.options.useCSS === true) {\n _.cssTransitions = true;\n }\n }\n\n if ( _.options.fade ) {\n if ( typeof _.options.zIndex === 'number' ) {\n if( _.options.zIndex < 3 ) {\n _.options.zIndex = 3;\n }\n } else {\n _.options.zIndex = _.defaults.zIndex;\n }\n }\n\n if (bodyStyle.OTransform !== undefined) {\n _.animType = 'OTransform';\n _.transformType = '-o-transform';\n _.transitionType = 'OTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.MozTransform !== undefined) {\n _.animType = 'MozTransform';\n _.transformType = '-moz-transform';\n _.transitionType = 'MozTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.webkitTransform !== undefined) {\n _.animType = 'webkitTransform';\n _.transformType = '-webkit-transform';\n _.transitionType = 'webkitTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.msTransform !== undefined) {\n _.animType = 'msTransform';\n _.transformType = '-ms-transform';\n _.transitionType = 'msTransition';\n if (bodyStyle.msTransform === undefined) _.animType = false;\n }\n if (bodyStyle.transform !== undefined && _.animType !== false) {\n _.animType = 'transform';\n _.transformType = 'transform';\n _.transitionType = 'transition';\n }\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n };\n\n\n Slick.prototype.setSlideClasses = function(index) {\n\n var _ = this,\n centerOffset, allSlides, indexOffset, remainder;\n\n allSlides = _.$slider\n .find('.slick-slide')\n .removeClass('slick-active slick-center slick-current')\n .attr('aria-hidden', 'true');\n\n _.$slides\n .eq(index)\n .addClass('slick-current');\n\n if (_.options.centerMode === true) {\n\n var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if (_.options.infinite === true) {\n\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n _.$slides\n .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n indexOffset = _.options.slidesToShow + index;\n allSlides\n .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n if (index === 0) {\n\n allSlides\n .eq(allSlides.length - 1 - _.options.slidesToShow)\n .addClass('slick-center');\n\n } else if (index === _.slideCount - 1) {\n\n allSlides\n .eq(_.options.slidesToShow)\n .addClass('slick-center');\n\n }\n\n }\n\n _.$slides\n .eq(index)\n .addClass('slick-center');\n\n } else {\n\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n _.$slides\n .slice(index, index + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else if (allSlides.length <= _.options.slidesToShow) {\n\n allSlides\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n remainder = _.slideCount % _.options.slidesToShow;\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n allSlides\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n allSlides\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n }\n\n }\n\n if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n _.lazyLoad();\n }\n };\n\n Slick.prototype.setupInfinite = function() {\n\n var _ = this,\n i, slideIndex, infiniteCount;\n\n if (_.options.fade === true) {\n _.options.centerMode = false;\n }\n\n if (_.options.infinite === true && _.options.fade === false) {\n\n slideIndex = null;\n\n if (_.slideCount > _.options.slidesToShow) {\n\n if (_.options.centerMode === true) {\n infiniteCount = _.options.slidesToShow + 1;\n } else {\n infiniteCount = _.options.slidesToShow;\n }\n\n for (i = _.slideCount; i > (_.slideCount -\n infiniteCount); i -= 1) {\n slideIndex = i - 1;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex - _.slideCount)\n .prependTo(_.$slideTrack).addClass('slick-cloned');\n }\n for (i = 0; i < infiniteCount + _.slideCount; i += 1) {\n slideIndex = i;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex + _.slideCount)\n .appendTo(_.$slideTrack).addClass('slick-cloned');\n }\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n $(this).attr('id', '');\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.interrupt = function( toggle ) {\n\n var _ = this;\n\n if( !toggle ) {\n _.autoPlay();\n }\n _.interrupted = toggle;\n\n };\n\n Slick.prototype.selectHandler = function(event) {\n\n var _ = this;\n\n var targetElement =\n $(event.target).is('.slick-slide') ?\n $(event.target) :\n $(event.target).parents('.slick-slide');\n\n var index = parseInt(targetElement.attr('data-slick-index'));\n\n if (!index) index = 0;\n\n if (_.slideCount <= _.options.slidesToShow) {\n\n _.slideHandler(index, false, true);\n return;\n\n }\n\n _.slideHandler(index);\n\n };\n\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n _ = this, navTarget;\n\n sync = sync || false;\n\n if (_.animating === true && _.options.waitForAnimate === true) {\n return;\n }\n\n if (_.options.fade === true && _.currentSlide === index) {\n return;\n }\n\n if (sync === false) {\n _.asNavFor(index);\n }\n\n targetSlide = index;\n targetLeft = _.getLeft(targetSlide);\n slideLeft = _.getLeft(_.currentSlide);\n\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n }\n\n if ( _.options.autoplay ) {\n clearInterval(_.autoPlayTimer);\n }\n\n if (targetSlide < 0) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n } else {\n animSlide = _.slideCount + targetSlide;\n }\n } else if (targetSlide >= _.slideCount) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = 0;\n } else {\n animSlide = targetSlide - _.slideCount;\n }\n } else {\n animSlide = targetSlide;\n }\n\n _.animating = true;\n\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n oldSlide = _.currentSlide;\n _.currentSlide = animSlide;\n\n _.setSlideClasses(_.currentSlide);\n\n if ( _.options.asNavFor ) {\n\n navTarget = _.getNavTarget();\n navTarget = navTarget.slick('getSlick');\n\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n navTarget.setSlideClasses(_.currentSlide);\n }\n\n }\n\n _.updateDots();\n _.updateArrows();\n\n if (_.options.fade === true) {\n if (dontAnimate !== true) {\n\n _.fadeSlideOut(oldSlide);\n\n _.fadeSlide(animSlide, function() {\n _.postSlide(animSlide);\n });\n\n } else {\n _.postSlide(animSlide);\n }\n _.animateHeight();\n return;\n }\n\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(targetLeft, function() {\n _.postSlide(animSlide);\n });\n } else {\n _.postSlide(animSlide);\n }\n\n };\n\n Slick.prototype.startLoad = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.hide();\n _.$nextArrow.hide();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.hide();\n\n }\n\n _.$slider.addClass('slick-loading');\n\n };\n\n Slick.prototype.swipeDirection = function() {\n\n var xDist, yDist, r, swipeAngle, _ = this;\n\n xDist = _.touchObject.startX - _.touchObject.curX;\n yDist = _.touchObject.startY - _.touchObject.curY;\n r = Math.atan2(yDist, xDist);\n\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n return (_.options.rtl === false ? 'right' : 'left');\n }\n if (_.options.verticalSwiping === true) {\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n return 'vertical';\n\n };\n\n Slick.prototype.swipeEnd = function(event) {\n\n var _ = this,\n slideCount,\n direction;\n\n _.dragging = false;\n _.swiping = false;\n\n if (_.scrolling) {\n _.scrolling = false;\n return false;\n }\n\n _.interrupted = false;\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n if ( _.touchObject.curX === undefined ) {\n return false;\n }\n\n if ( _.touchObject.edgeHit === true ) {\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n }\n\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n direction = _.swipeDirection();\n\n switch ( direction ) {\n\n case 'left':\n case 'down':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n _.currentSlide + _.getSlideCount();\n\n _.currentDirection = 0;\n\n break;\n\n case 'right':\n case 'up':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n _.currentSlide - _.getSlideCount();\n\n _.currentDirection = 1;\n\n break;\n\n default:\n\n\n }\n\n if( direction != 'vertical' ) {\n\n _.slideHandler( slideCount );\n _.touchObject = {};\n _.$slider.trigger('swipe', [_, direction ]);\n\n }\n\n } else {\n\n if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n _.slideHandler( _.currentSlide );\n _.touchObject = {};\n\n }\n\n }\n\n };\n\n Slick.prototype.swipeHandler = function(event) {\n\n var _ = this;\n\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n return;\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n return;\n }\n\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n event.originalEvent.touches.length : 1;\n\n _.touchObject.minSwipe = _.listWidth / _.options\n .touchThreshold;\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.minSwipe = _.listHeight / _.options\n .touchThreshold;\n }\n\n switch (event.data.action) {\n\n case 'start':\n _.swipeStart(event);\n break;\n\n case 'move':\n _.swipeMove(event);\n break;\n\n case 'end':\n _.swipeEnd(event);\n break;\n\n }\n\n };\n\n Slick.prototype.swipeMove = function(event) {\n\n var _ = this,\n edgeWasHit = false,\n curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n return false;\n }\n\n curLeft = _.getLeft(_.currentSlide);\n\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n _.touchObject.swipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n verticalSwipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n _.scrolling = true;\n return false;\n }\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.swipeLength = verticalSwipeLength;\n }\n\n swipeDirection = _.swipeDirection();\n\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n _.swiping = true;\n event.preventDefault();\n }\n\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n if (_.options.verticalSwiping === true) {\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n }\n\n\n swipeLength = _.touchObject.swipeLength;\n\n _.touchObject.edgeHit = false;\n\n if (_.options.infinite === false) {\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n _.touchObject.edgeHit = true;\n }\n }\n\n if (_.options.vertical === false) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n } else {\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n }\n if (_.options.verticalSwiping === true) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n }\n\n if (_.options.fade === true || _.options.touchMove === false) {\n return false;\n }\n\n if (_.animating === true) {\n _.swipeLeft = null;\n return false;\n }\n\n _.setCSS(_.swipeLeft);\n\n };\n\n Slick.prototype.swipeStart = function(event) {\n\n var _ = this,\n touches;\n\n _.interrupted = true;\n\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n _.touchObject = {};\n return false;\n }\n\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n touches = event.originalEvent.touches[0];\n }\n\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n _.dragging = true;\n\n };\n\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n var _ = this;\n\n if (_.$slidesCache !== null) {\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.unload = function() {\n\n var _ = this;\n\n $('.slick-cloned', _.$slider).remove();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.remove();\n }\n\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.remove();\n }\n\n _.$slides\n .removeClass('slick-slide slick-active slick-visible slick-current')\n .attr('aria-hidden', 'true')\n .css('width', '');\n\n };\n\n Slick.prototype.unslick = function(fromBreakpoint) {\n\n var _ = this;\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\n _.destroy();\n\n };\n\n Slick.prototype.updateArrows = function() {\n\n var _ = this,\n centerOffset;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if ( _.options.arrows === true &&\n _.slideCount > _.options.slidesToShow &&\n !_.options.infinite ) {\n\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n if (_.currentSlide === 0) {\n\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n }\n\n }\n\n };\n\n Slick.prototype.updateDots = function() {\n\n var _ = this;\n\n if (_.$dots !== null) {\n\n _.$dots\n .find('li')\n .removeClass('slick-active')\n .end();\n\n _.$dots\n .find('li')\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n .addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.visibility = function() {\n\n var _ = this;\n\n if ( _.options.autoplay ) {\n\n if ( document[_.hidden] ) {\n\n _.interrupted = true;\n\n } else {\n\n _.interrupted = false;\n\n }\n\n }\n\n };\n\n $.fn.slick = function() {\n var _ = this,\n opt = arguments[0],\n args = Array.prototype.slice.call(arguments, 1),\n l = _.length,\n i,\n ret;\n for (i = 0; i < l; i++) {\n if (typeof opt == 'object' || typeof opt == 'undefined')\n _[i].slick = new Slick(_[i], opt);\n else\n ret = _[i].slick[opt].apply(_[i].slick, args);\n if (typeof ret != 'undefined') return ret;\n }\n return _;\n };\n\n}));\n","/*!\n * Bootstrap collapse.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));\n})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'collapse';\n const DATA_KEY = 'bs.collapse';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_COLLAPSE = 'collapse';\n const CLASS_NAME_COLLAPSING = 'collapsing';\n const CLASS_NAME_COLLAPSED = 'collapsed';\n const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n const WIDTH = 'width';\n const HEIGHT = 'height';\n const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n const Default = {\n parent: null,\n toggle: true\n };\n const DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n index_js.reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = index_js.getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n });\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Collapse);\n\n return Collapse;\n\n}));\n//# sourceMappingURL=collapse.js.map\n","/*\n * Project: Stalker jQuery plugin\n * Description: Allowing elements to follow the user as the scroll around the page in a\n * single direction\n * Version: 1.0 (Sep 9, 2012)\n * Author: Matt Willer, Box Inc (http://www.box.com)\n * License: BSD\n *\n *\n * Usage:\n * JS -\n * $(elements).stalker()\n *\n * Optional params:\n * direction (string - default: 'down') -\n * The direction the element should follow the user from its original position. For\n * example, specifying 'up' means that whenever the user is scrolled above the\n * element's original position, the element will follow the user along the page.\n * When the user scrolls beneath the element's original position, the element will\n * return to that position.\n * offset (integer - default: 0) -\n * The number of pixels from the edge of the screen the element should position itself\n * while following the user.\n * stalkerStyle (object/string - default: {}) -\n * CSS properties to be applied to the element while it is following the user. The\n * element's original CSS will be saved and reapplied when it returns to its original\n * position. If a string is given, it will be treated as a class to apply to the\n * element while it is following the user.\n * delay (integer - default: 0) -\n * The delay, in milliseconds, before the element leaves its original position to\n * follow the user.\n * startCallback (function - default: none) -\n * A callback to be executed when the element begins following the user. The function\n * context will be the DOM element\n * stopCallback (function - default: none) -\n * A callback to be executed as soon as the element stops following the user and\n * returns to its original position. The function context will be the DOM element\n *\n*/\n\n// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;(function ( $, window, undefined ) {\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than globals\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = 'stalker'\n\t\t,document = window.document\n\t\t,defaults = {\n\t\t\tdirection: 'down'\n\t\t\t,offset: 0\n\t\t\t,stalkerStyle: {}\n\t\t\t,delay: 0\n\t\t\t,startCallback: null\n\t\t\t,stopCallback: null\n\t\t}\n\t\t// change this to fit the CSS of the site if necessary\n\t\t,stalkerZIndex = 50;\n\n\t// The actual plugin constructor\n\tfunction Stalker( element, options )\n\t{\n\t\tthis.element = element;\n\n\t\t// jQuery has an extend method which merges the contents of two or\n\t\t// more objects, storing the result in the first object. The first object\n\t\t// is generally empty as we don't want to alter the default options for\n\t\t// future instances of the plugin\n\t\tthis.options = $.extend( {}, defaults, options) ;\n\n\t\tthis._defaults = defaults;\n\t\tthis._name = pluginName;\n\n\t\tthis.init();\n\t}\n\n\t/**\n\t * Handles an element stalking\n\t */\n\tStalker.prototype.init = function()\n\t{\n\t\tthis.jElement = $(this.element);\n\n\t\t// save the element's original position and CSS\n\t\tthis._baseOffset = this.jElement.offset();\n\t\tthis._baseWidth = this.jElement.width();\n\n\t\t// we need a placeholder to keep the document from reflowing\n\t\t// use a clone to keep styles (esp. those related to width) but remove\n\t\t// children to reduce id conflicts\n\n\t\t// We use jElement.height() instead of outerHeight() since original\n\t\t// padding is still applied to placeholder element\n\t\tthis.placeholder = this.styleClone(this.jElement).css('height', this.jElement.height());\n\n\t\tthis.stalking = false;\n\n\t\tvar me = this;\n\n\t\t/**\n\t\t * Starts an element stalking; applies custom styles and handles positioning\n\t\t */\n\t\tfunction setPosition(edge)\n\t\t{\n\t\t\tme.stalking = true;\n\n\t\t\tvar initial = {position: 'fixed'}, ending = $.extend({}, initial);\n\t\t\tinitial[edge] = -(me.jElement.outerHeight()) + 'px';\n\t\t\tending[edge] = parseInt(me.options.offset) + 'px';\n\n\t\t\tvar handler = function()\n\t\t\t{\n\t\t\t\t// give the element custom style while stalking; by default,\n\t\t\t\t// force the element to have its original width and appear on top\n\t\t\t\tvar basicStalkerCSS = {width: me._baseWidth + 'px', left: me._baseOffset.left + 'px', 'z-index': stalkerZIndex};\n\t\t\t\tif (typeof me.options.stalkerStyle == 'object')\n\t\t\t\t{\n\t\t\t\t\tme.jElement.css($.extend(basicStalkerCSS, me.options.stalkerStyle));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tme.jElement.css(basicStalkerCSS).addClass(me.options.stalkerStyle);\n\t\t\t\t}\n\n\t\t\t\tme.jElement.before(me.placeholder).css(ending);\n\t\t\t};\n\n\t\t\tif (me.options.delay)\n\t\t\t{\n\t\t\t\tsetTimeout(handler, me.options.delay);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\thandler();\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Restores an element to its original state after stalking\n\t\t * by refreshing it with its clone\n\t\t */\n\t\tfunction restoreOriginalState()\n\t\t{\n\t\t\t// discard the stalker and all its weird inline styles\n\t\t\tme.jElement.detach();\n\n\t\t\t// rip the guts out of the original and dump them into the clone\n\t\t\tvar contents = me.jElement.contents();\n\t\t\tme._jElementClone.empty().append(contents);\n\n\t\t\tme.placeholder.replaceWith(me._jElementClone);\n\n\t\t\t// make the old clone the element we're tracking\n\t\t\tme.jElement = me._jElementClone;\n\n\t\t\t// create a new clone later, when we start stalking again\n\n\t\t\tme.stalking = false;\n\n\t\t\tif (me.options.stopCallback)\n\t\t\t{\n\t\t\t\tme.options.stopCallback.call(me.jElement[0]);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Performs the necessary checks of element position relative to\n\t\t * the window, and causes the element to start or stop stalking\n\t\t * accordingly\n\t\t */\n\t\tfunction stalk()\n\t\t{\n\t\t\tvar pageTop = $(document).scrollTop();\n\t\t\tvar viewportHeight = $(window).height();\n\t\t\tvar pageBottom = pageTop + viewportHeight;\n\n\t\t\tif (me.options.direction == 'down')\n\t\t\t{\n\t\t\t\tif (me._baseOffset.top < pageTop)\n\t\t\t\t{\n\t\t\t\t\tif (!me.stalking)\n\t\t\t\t\t{\n\t\t\t\t\t\t// create a clone of the element, which will be used to keep the\n\t\t\t\t\t\t// element's original styles intact for when we're done stalking\n\t\t\t\t\t\t// We want to do this as late as possible.\n\t\t\t\t\t\t// We won't need the descendents, so don't bother with them\n\t\t\t\t\t\tme._jElementClone = me.styleClone(me.jElement);\n\n\t\t\t\t\t\tsetPosition('top');\n\n\t\t\t\t\t\tif (me.options.startCallback)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tme.options.startCallback.call(me.jElement[0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (me.stalking)\n\t\t\t\t{\n\t\t\t\t\trestoreOriginalState();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (me._baseOffset.top + me.jElement.outerHeight() > pageBottom)\n\t\t\t\t{\n\t\t\t\t\tif (!me.stalking)\n\t\t\t\t\t{\n\t\t\t\t\t\t// create a clone of the element, which will be used to keep the\n\t\t\t\t\t\t// element's original styles intact for when we're done stalking\n\t\t\t\t\t\t// We want to do this as late as possible.\n\t\t\t\t\t\t// We won't need the descendents, so don't bother with them\n\t\t\t\t\t\tme._jElementClone = me.styleClone(me.jElement);\n\n\t\t\t\t\t\tsetPosition('bottom');\n\n\t\t\t\t\t\tif (me.options.startCallback)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tme.options.startCallback.call(me.jElement[0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (me.stalking)\n\t\t\t\t{\n\t\t\t\t\trestoreOriginalState();\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tfunction handleEvent()\n\t\t{\n\t\t\t// since resize gets called when window zooms, re-cache element width\n\t\t\tif (me.stalking)\n\t\t\t{\n\t\t\t\tif (me.options.stalkerStyle && me.options.stalkerStyle.width)\n\t\t\t\t{\n\t\t\t\t\tme._baseWidth = me.options.stalkerStyle.width;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tme._baseWidth = me.placeholder.width();\n\t\t\t\t}\n\n\t\t\t\tme._baseOffset = me.placeholder.offset();\n\t\t\t\tme.jElement.width(me._baseWidth).css('left', me._baseOffset.left + 'px');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tme._baseWidth = me.jElement.width();\n\t\t\t\tme._baseOffset = me.jElement.offset();\n\t\t\t}\n\t\t\tstalk();\n\t\t}\n\n\t\t// set up event handlers and call immediately\n\t\t$(window).on('scroll.stalker', handleEvent).on('resize.stalker', handleEvent);\n\n\t\tstalk();\n\t};\n\n\tStalker.prototype.styleClone = function($node)\n\t{\n\t\t// Extract the node from the jQuery object for cloning.\n\t\tvar node = 'nodeName' in $node ? $node : $node[0];\n\t\tvar clone = document.createElement(node.nodeName);\n\n\t\tvar i, length, attr;\n\t\tfor (i = 0, length = node.attributes.length; i < length; i++)\n\t\t{\n\t\t\tattr = node.attributes[i];\n\t\t\tclone.setAttribute(attr.name || attr.nodeName, attr.value || attr.nodeValue);\n\t\t}\n\n\t\t// Clean and re-merge attributes.\n\t\tif (clone.clearAttributes)\n\t\t{\n\t\t\tclone.clearAttributes();\n\t\t}\n\t\tif (clone.mergeAttributes)\n\t\t{\n\t\t\tclone.mergeAttributes(node);\n\t\t}\n\n\t\treturn $(clone);\n\t};\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function ( options )\n\t{\n\t\treturn this.each(function ()\n\t\t{\n\t\t\tif (!$.data(this, 'plugin_' + pluginName))\n\t\t\t{\n\t\t\t\t$.data(this, 'plugin_' + pluginName, new Stalker( this, options ));\n\t\t\t}\n\t\t});\n\t};\n\n}(jQuery, window));\n","/*!\n * Bootstrap event-handler.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n const stripNameRegex = /\\..*/;\n const stripUidRegex = /::\\d+$/;\n const eventRegistry = {}; // Events storage\n let uidEvent = 1;\n const customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n /**\n * Private methods\n */\n\n function makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n }\n function getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n }\n function bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n }\n function bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n }\n function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n }\n function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n }\n function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n }\n function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n }\n function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n }\n function getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n }\n const EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = index_js.getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n };\n function hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n }\n\n return EventHandler;\n\n}));\n//# sourceMappingURL=event-handler.js.map\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n"],"names":["module","exports","Data","EventHandler","Config","index_js","constructor","element","config","super","getElement","this","_element","_config","_getConfig","set","DATA_KEY","dispose","remove","off","EVENT_KEY","propertyName","Object","getOwnPropertyNames","_queueCallback","callback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","get","getOrCreateInstance","VERSION","NAME","eventName","name","factory","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","findShadowRoot","document","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","getjQuery","jQuery","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","readyState","length","addEventListener","push","execute","possibleCallback","args","defaultValue","defineJQueryPlugin","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","querySelector","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","getUID","prefix","floor","random","getElementById","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","getAttribute","isRTL","dir","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","noop","reflow","offsetHeight","toType","prototype","toString","call","toLowerCase","defineProperty","Symbol","toStringTag","value","isObject","obj","extend","src","noExtend","keys","filter","key","forEach","ssrDocument","blur","nodeName","querySelectorAll","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","Image","Date","screen","clearTimeout","matchMedia","requestAnimationFrame","cancelAnimationFrame","getWindow","win","classesToTokens","classes","trim","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","map","a","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","o","slice","to","arguments","undefined","i","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","current","animate","getTime","progress","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","HTMLSlotElement","assignedElements","matches","showWarning","text","console","warn","err","tag","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","String","includes","major","minor","num","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","__emitterProxy","_len","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","toggleSlideClasses","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","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","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","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","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","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","detail","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","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","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","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","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","use","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","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","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","forceActiveIndex","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","pagination","clickable","isHidden","toggle","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","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","isPanningWithMouse","mousePanStart","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","isMousePan","onMouseMove","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","DOMMatrix","f","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","prevScale","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","live","addElLive","updateNavigation","updatePagination","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","Manipulator","Default","DefaultType","Error","jsonConfig","getDataAttribute","getDataAttributes","configTypes","expectedTypes","valueType","RegExp","TypeError","__webpack_modules__","__unused_webpack_module","d","M","englishMap","spanishMap","ElectroPrivacyLanguageMap","en","es","stringMap","languageAttribute","language","getLanguageString","strName","_language_support__WEBPACK_IMPORTED_MODULE_0__","otDataSubjectId","dnsUI","token","preferences","electroPrivacyStaging","serverName","some","testString","isNonProduction","re","inputValidation","emailInputValue","textInput","email","error","xhr","XMLHttpRequest","open","setRequestHeader","send","setPreferences","confirmSubmit","insertAdjacentHTML","hideDnsUI","stockText","dnsText","essentialCat","performanceCat","functionalCat","closeBtn","paidMarketingText","emailInput","pcCatTitle","catDescription","pcTitle","textAlign","domCheckInterval","setInterval","pattern","setCustomValidity","sdkButton","dnsButton","doNotShareUI","code","close","checked","clearInterval","JSON","parse","__webpack_module_cache__","moduleId","cachedModule","definition","hasOwnProperty","dsIdSet","checkBeforeInit","async","dataLayer","OneTrustActiveGroups","OnetrustActiveGroups","otEmailHTML","dnsCustomText","toggleTextContainer","appendChild","Promise","resolve","then","OptanonWrapperLocal","Zepto","lazyInstanceId","windowLoaded","LazyPlugin","settings","_instance","_events","_namespace","entryName","addItems","items","getItems","g","useThrottle","loadAll","all","appendScroll","instance","namespace","_awaitingAfterLoad","_actualWidth","_actualHeight","_isRetinaDisplay","_afterLoad","_load","_error","_img","_src","_srcset","_sizes","_backgroundImage","_initialize","lastExecute","devicePixelRatio","_prepareItems","_lazyLoadItems","combined","throttle","ignoreThrottle","elapsed","enableThrottle","additionalItems","loadedName","forcedItems","defaultImage","placeholder","imageBase","srcsetAttribute","loaderAttribute","forcedTags","_f","_getElementTagName","handledName","attr","attribute","l","elementImageBase","imageBaseAttribute","_getCorrectedSrcSet","css","allItems","forced","loadTriggered","_isInLoadableArea","customLoader","visibleOnly","is","_handleItem","autoDestroy","errorCallback","_triggerCallback","_reduceAwaiting","srcAttribute","sizesAttribute","retinaAttribute","elementRetina","loadCallback","removeAttr","one","response","trigger","imageObj","effectTime","imageSrc","elementBound","scrollDirection","vertical","bottom","horizontal","right","srcset","_executeLazy","chainable","Lazy","lazy","names","loader","isFunction","beforeLoad","afterLoad","onError","onFinishedAll","elementMap","Map","has","instanceMap","delete","normalizeData","decodeURIComponent","_unused","normalizeDataKey","chr","setDataAttribute","removeDataAttribute","bsKeys","dataset","startsWith","pureKey","charAt","_typeof","iterator","_extends","source","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_i","done","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","globalID","pastWarnings","Utils","regex","specified","camelize","deserializeValue","checkAttr","_checkAttr","setAttr","dasherize","getType","generateID","str","_window$console","warnOnce","msg","_resetWarnings","trimString","string","date","parsed","_parsed$map2","year","month","day","getFullYear","getMonth","getDate","_string","integer","regexp","_regexp","flags","parseRequirement","requirementType","converter","converted","concat","namespaceEvents","difference","result","each","elem","promises","when","objectCreate","create","_SubmitSelector","Defaults","inputs","excluded","priorityEnabled","multiple","group","uiEnabled","validationThreshold","focus","triggerAfterFailure","errorClass","successClass","classHandler","Field","errorsContainer","errorsWrapper","errorTemplate","Base","__id__","asyncSupport","_pipeAccordingToValidationResult","_this","pipe","Deferred","validationResult","reject","promise","actualizeOptions","domOptions","_resetOptions","initOptions","_listeners","subscribe","listenTo","queue","unsubscribe","unsubscribeTo","extraArg","asyncIsValid","whenValid","_findRelated","$element","Validator","spec","validate","requirementFirstArg","validateMultiple","validateDate","_isDateInput","validateNumber","validateString","parseRequirements","requirements","extraOptionReader","values","convertArrayRequirement","isPlainObject","requirementSpec","main","extra","convertExtraOptionRequirement","ValidatorRegistry","validators","catalog","__class__","locale","typeTesters","digits","alphanum","range","decimalPlaces","operatorToValidator","operator","requirementsAndInput","parseArguments","comparisonOperator","addValidator","Parsley","setLocale","addCatalog","messages","addMessage","addMessages","nameMessageObject","arg1","arg2","_setValidator","hasValidator","updateValidator","removeValidator","validator","getErrorMessage","constraint","formatMessage","defaultMessage","parameters","notblank","required","_ref$step","_ref$base","tester","nb","decimals","toInt","pow","minlength","requirement","maxlength","mincheck","maxcheck","check","equalto","refOrValue","$reference","euvatin","UI","diffResults","newResult","oldResult","deep","added","kept","assert","removed","Form","_actualizeTriggers","onSubmitValidate","onSubmitButton","_focusedField","fields","field","noFocus","_destroyUI","_reflowUI","_buildUI","_ui","lastValidationResult","_manageStatusClass","_manageErrorsMessages","_failedOnce","getErrorsMessages","errorMessage","_getErrorMessage","addError","_ref$updateClass","updateClass","_addError","_errorClass","updateError","_ref2$updateClass","_updateError","removeError","_ref3$updateClass","_removeError","hasConstraints","needsValidation","_successClass","_resetClass","errorsMessagesDisabled","_insertErrorWrapper","$errorsWrapper","addClass","$errorClassHandler","errorsWrapperId","html","removeClass","_ref4","_ref5","customConstraintErrorMessage","_manageClassHandler","validationInformationVisible","$handlerFunction","$handler","_inputHolder","$errorsContainer","after","_this2","$toBind","_validateIfNeeded","_this3","getValue","debounce","_debounced","_resetUI","statusMapping","pending","resolved","rejected","parsley","submitSource","_submitSource","_remoteCache","whenValidate","_trigger","_submit","currentTarget","$synthetic","appendTo","_arguments","_Utils$all$done$fail$","submitEvent","_refreshFields","_withoutReactualizingFormOptions","fail","always","isValid","_arguments2","refresh","removeData","_bindFields","_this4","oldFields","fieldsMappedById","not","fieldInstance","Factory","uniqueId","oldActualizeOptions","Constraint","parsleyField","isDomConstraint","validatorSpec","_validatorRegistry","_parseRequirements","_this$validator","requirementList","parsleyFormInstance","constraints","constraintsByName","_bindConstraints","statusMapping$1","_this$whenValid$alway","_isInGroup","_refreshed","_isRequired","validateIfEmpty","inArray","_ref2$force","groupedConstraints","_getGroupedConstraints","_validateConstraint","_handleWhitespace","_refreshConstraints","refreshConstraints","addConstraint","removeConstraint","updateConstraint","_bindHtml5Constraints","trimValue","whitespace","Multiple","addElement","$elements","fieldConstraints","_init","savedparsleyFormInstance","__version__","isMultiple","handleMultiple","parsleyMultipleInstance","input","$previouslyRelated","doNotStore","parsleyInstance","ParsleyExtend","vernums","version","psly","instances","ParsleyConfig","ParsleyUtils","registry","i18n","ParsleyValidator","_window$Parsley","ParsleyUI","doNotUpdateClass","autoBind","deprecated","adapt","parsleyAdaptedCallback","eventPrefix","lastIndexOf","listen","unsubscribeAll","instanceGiven","asyncValidators","status","reverse","addAsyncValidator","ajaxOptions","csr","encodeURIComponent","remoteOptions","param","ajax","handleXhr","globals","isNativeEvent","isTrusted","fakeInputEvent","misbehaves","behavesOk","install","inputEventPatched","uninstall","getSelector","hrefAttribute","sel","SelectorEngine","Element","findOne","ancestor","previous","focusableChildren","focusables","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","selection","getSelection","rangeCount","active","ranges","getRangeAt","removeAllRanges","addRange","instanceUid","Slick","dataSettings","accessibility","adaptiveHeight","appendArrows","appendDots","arrows","asNavFor","prevArrow","nextArrow","autoplaySpeed","centerMode","centerPadding","cssEase","customPaging","slider","dots","dotsClass","easing","edgeFriction","fade","focusOnSelect","focusOnChange","infinite","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","responsive","slidesToShow","slidesToScroll","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","verticalSwiping","waitForAnimate","initials","dragging","autoPlayTimer","currentLeft","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","$slideTrack","$slides","sliding","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpointSettings","cssTransitions","focussed","interrupted","hidden","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowTimer","originalSettings","mozHidden","webkitHidden","autoPlay","proxy","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","dragHandler","keyHandler","htmlExpr","registerBreakpoints","activateADA","slickAdd","markup","addBefore","unload","insertBefore","eq","insertAfter","prependTo","detach","reinit","animateHeight","targetHeight","outerHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slick","slideHandler","buildArrows","buildDots","dot","getDotCount","first","buildOut","wrapAll","wrap","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","createDocumentFragment","empty","checkResponsive","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","unslick","dontAnimate","indexOffset","$target","checkNavigable","navigables","prevNavigable","getNavigableIndexes","n","cleanUpEvents","interrupt","visibility","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","fadeSlide","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","counter","pagerQty","getLeft","verticalHeight","targetSlide","coef","verticalOffset","outerWidth","getOption","slickGetOption","option","indexes","getSlick","getSlideCount","swipedSlide","goTo","slickGoTo","creation","hasClass","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","end","initArrowEvents","initDotEvents","initSlideEvents","action","initUI","show","loadRange","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","onload","onerror","progressiveLazyLoad","slickNext","slickPause","play","slickPlay","postSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","responsiveSettings","windowDelay","slickRemove","removeBefore","removeAll","setCSS","positionProps","setDimensions","padding","setFade","setHeight","setOption","slickSetOption","opt","bodyStyle","WebkitTransition","MozTransition","msTransition","perspectiveProperty","webkitPerspective","MozPerspective","remainder","evenCoef","infiniteCount","clone","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","xDist","yDist","swipeAngle","curX","curY","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","curLeft","positionOffset","verticalSwipeLength","unfilterSlides","slickUnfilter","fromBreakpoint","ret","BaseComponent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","activeChildren","_getFirstLevelChildren","defaultPrevented","activeInstance","dimension","_getDimension","scrollSize","Boolean","selected","triggerArray","isOpen","delegateTarget","pluginName","stalkerStyle","startCallback","stopCallback","Stalker","_defaults","_name","jElement","_baseOffset","_baseWidth","styleClone","stalking","me","edge","ending","basicStalkerCSS","before","restoreOriginalState","contents","_jElementClone","replaceWith","stalk","pageTop","pageBottom","handleEvent","$node","nodeValue","clearAttributes","mergeAttributes","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","handlers","previousFunction","domElements","domElement","hydrateObj","bootstrapDelegationHandler","bootstrapHandler","removeHandler","removeNamespacedHandlers","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","nativeDispatch","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","meta","configurable","deselectCurrent","clipboardToIE11Formatting","debug","reselectPrevious","mark","success","createRange","ariaHidden","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","format","clipboardData","clearData","setData","onCopy","selectNodeContents","execCommand","copyKey","prompt","removeRange","removeChild"],"sourceRoot":""}