{"version":3,"file":"/js/main.script.js","mappings":"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","sources":["webpack://dxp_emea/webpack/runtime/chunk loaded","webpack://dxp_emea/./node_modules/@popperjs/core/lib/enums.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/math.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/within.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/createPopper.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/popper.js","webpack://dxp_emea/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://dxp_emea/./node_modules/ssr-window/ssr-window.esm.js","webpack://dxp_emea/./node_modules/swiper/shared/utils.js","webpack://dxp_emea/./node_modules/swiper/shared/get-support.js","webpack://dxp_emea/./node_modules/swiper/shared/get-device.js","webpack://dxp_emea/./node_modules/swiper/shared/get-browser.js","webpack://dxp_emea/./node_modules/swiper/core/events-emitter.js","webpack://dxp_emea/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://dxp_emea/./node_modules/swiper/core/update/index.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateSize.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateSlides.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateProgress.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://dxp_emea/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://dxp_emea/./node_modules/swiper/core/translate/index.js","webpack://dxp_emea/./node_modules/swiper/core/translate/getTranslate.js","webpack://dxp_emea/./node_modules/swiper/core/translate/setTranslate.js","webpack://dxp_emea/./node_modules/swiper/core/translate/minTranslate.js","webpack://dxp_emea/./node_modules/swiper/core/translate/maxTranslate.js","webpack://dxp_emea/./node_modules/swiper/core/translate/translateTo.js","webpack://dxp_emea/./node_modules/swiper/core/transition/transitionEmit.js","webpack://dxp_emea/./node_modules/swiper/core/slide/index.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideTo.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideToLoop.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideNext.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slidePrev.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideReset.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideToClosest.js","webpack://dxp_emea/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://dxp_emea/./node_modules/swiper/core/loop/index.js","webpack://dxp_emea/./node_modules/swiper/core/loop/loopCreate.js","webpack://dxp_emea/./node_modules/swiper/core/loop/loopFix.js","webpack://dxp_emea/./node_modules/swiper/core/loop/loopDestroy.js","webpack://dxp_emea/./node_modules/swiper/core/events/onTouchStart.js","webpack://dxp_emea/./node_modules/swiper/core/events/onTouchMove.js","webpack://dxp_emea/./node_modules/swiper/core/events/onTouchEnd.js","webpack://dxp_emea/./node_modules/swiper/core/events/onResize.js","webpack://dxp_emea/./node_modules/swiper/core/events/onClick.js","webpack://dxp_emea/./node_modules/swiper/core/events/onScroll.js","webpack://dxp_emea/./node_modules/swiper/core/events/onLoad.js","webpack://dxp_emea/./node_modules/swiper/core/events/index.js","webpack://dxp_emea/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://dxp_emea/./node_modules/swiper/core/check-overflow/index.js","webpack://dxp_emea/./node_modules/swiper/core/defaults.js","webpack://dxp_emea/./node_modules/swiper/core/moduleExtendParams.js","webpack://dxp_emea/./node_modules/swiper/core/core.js","webpack://dxp_emea/./node_modules/swiper/core/transition/index.js","webpack://dxp_emea/./node_modules/swiper/core/transition/setTransition.js","webpack://dxp_emea/./node_modules/swiper/core/transition/transitionStart.js","webpack://dxp_emea/./node_modules/swiper/core/transition/transitionEnd.js","webpack://dxp_emea/./node_modules/swiper/core/grab-cursor/index.js","webpack://dxp_emea/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://dxp_emea/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://dxp_emea/./node_modules/swiper/core/breakpoints/index.js","webpack://dxp_emea/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://dxp_emea/./node_modules/swiper/core/classes/index.js","webpack://dxp_emea/./node_modules/swiper/core/classes/addClasses.js","webpack://dxp_emea/./node_modules/swiper/core/classes/removeClasses.js","webpack://dxp_emea/./node_modules/swiper/core/modules/resize/resize.js","webpack://dxp_emea/./node_modules/swiper/core/modules/observer/observer.js","webpack://dxp_emea/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://dxp_emea/./node_modules/swiper/shared/classes-to-selector.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://dxp_emea/./node_modules/swiper/shared/effect-init.js","webpack://dxp_emea/./node_modules/swiper/shared/effect-target.js","webpack://dxp_emea/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://dxp_emea/./node_modules/swiper/shared/create-shadow.js","webpack://dxp_emea/./node_modules/swiper/swiper-bundle.esm.js","webpack://dxp_emea/./node_modules/swiper/modules/virtual/virtual.js","webpack://dxp_emea/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://dxp_emea/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://dxp_emea/./node_modules/swiper/modules/navigation/navigation.js","webpack://dxp_emea/./node_modules/swiper/modules/pagination/pagination.js","webpack://dxp_emea/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://dxp_emea/./node_modules/swiper/modules/parallax/parallax.js","webpack://dxp_emea/./node_modules/swiper/modules/zoom/zoom.js","webpack://dxp_emea/./node_modules/swiper/modules/controller/controller.js","webpack://dxp_emea/./node_modules/swiper/modules/a11y/a11y.js","webpack://dxp_emea/./node_modules/swiper/modules/history/history.js","webpack://dxp_emea/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://dxp_emea/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://dxp_emea/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://dxp_emea/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://dxp_emea/./node_modules/swiper/modules/grid/grid.js","webpack://dxp_emea/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://dxp_emea/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://dxp_emea/./node_modules/swiper/components-shared/params-list.js","webpack://dxp_emea/./node_modules/swiper/components-shared/utils.js","webpack://dxp_emea/./node_modules/swiper/element/get-params.js","webpack://dxp_emea/./node_modules/swiper/element/swiper-element-bundle.js","webpack://dxp_emea/./node_modules/swiper/components-shared/update-swiper.js","webpack://dxp_emea/./web/themes/custom/dxp_emea/src/js/components/constants.js","webpack://dxp_emea/./web/themes/custom/dxp_emea/src/js/components/carousel.js","webpack://dxp_emea/./web/themes/custom/dxp_emea/src/js/components/button.js","webpack://dxp_emea/./web/themes/custom/dxp_emea/src/js/main.script.js","webpack://dxp_emea/./web/themes/custom/dxp_emea/src/js/components/siteConfig.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/alert.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/base-component.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/button.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/carousel.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/collapse.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/dom/data.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/dom/event-handler.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/dom/manipulator.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/dom/selector-engine.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/dropdown.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/modal.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/offcanvas.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/popover.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/scrollspy.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/tab.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/toast.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/tooltip.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/backdrop.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/component-functions.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/config.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/focustrap.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/index.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/sanitizer.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/scrollbar.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/swipe.js","webpack://dxp_emea/./node_modules/bootstrap/js/dist/util/template-factory.js","webpack://dxp_emea/webpack/bootstrap","webpack://dxp_emea/webpack/runtime/compat get default export","webpack://dxp_emea/webpack/runtime/define property getters","webpack://dxp_emea/webpack/runtime/hasOwnProperty shorthand","webpack://dxp_emea/webpack/runtime/make namespace object","webpack://dxp_emea/webpack/runtime/jsonp chunk loading","webpack://dxp_emea/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `
` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow, getDocument } from 'ssr-window';\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 = 0) {\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 = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\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(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[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({\n swiper,\n targetPosition,\n side\n}) {\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.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [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}\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };","import { getWindow, getDocument } from 'ssr-window';\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}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\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 (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\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 return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\n\nexport default {\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(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\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(...args) {\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 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};","export const 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 const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\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};\nexport const 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 const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind) {\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(slideIndexLastInView - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && i > slideIndexLastInView) unlazy(swiper, i);\n }\n }\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { elementStyle } from '../../shared/utils.js';\nexport default function 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}","import { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(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(slidesLength);\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, slidesLength, getDirectionLabel);\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[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[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[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\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' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n 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}","export default function 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}","export default function 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}","export default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","export default function 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}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function 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 getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\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 activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","import { preload } from '../../shared/process-lazy-preloader.js';\nexport function 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}\nexport default function 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) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\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 (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\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}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\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}","export default function 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}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\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 if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\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}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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 (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\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 && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\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 newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\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 }\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}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\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}","import { elementChildren, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\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}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","export default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n} = {}) {\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 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 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\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 + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\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.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 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 slideTo: false,\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(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\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}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.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 e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.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 const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\nexport default function 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 (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\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 prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\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 || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\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 if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\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 && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : 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 && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : 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 (swiper.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}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\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 (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 // 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);\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.currentTranslate === data.startTranslate) {\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 (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (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 = swiper.params.virtual && swiper.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}","export default function 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}","export default function 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}","export default function 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}","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function 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}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', 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\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 document = getDocument();\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 if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const 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\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\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 if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\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 (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","function 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}\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\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 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 loopedSlides: null,\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 slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-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};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\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}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { extend, deleteProps, createElement, elementChildren, elementStyle, elementIndex } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader, preload } from '../shared/process-lazy-preloader.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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 evCache: []\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 getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\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 (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n 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 (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n const slides = swiper.virtual && swiper.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 = true) {\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.shadowEl) {\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 : wrapperEl,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].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 = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\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}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function 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}","export default function 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}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function 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}\nexport default function 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}","export default function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\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(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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}","import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\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}","import { createElement, elementChildren } from './utils.js';\nexport default function 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}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","export default 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}","export default function 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}","export default function 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}","export default function 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}","export default function 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}","export default 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}","import { getSlideTransformEl } from './utils.js';\nexport default function 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}","import { elementTransitionEnd } from './utils.js';\nexport default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides\n}) {\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];\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}","import { createElement, getSlideTransformEl } from './utils.js';\nexport default function createShadow(params, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass}`);\n if (!shadowEl) {\n shadowEl = createElement('div', `swiper-slide-shadow${side ? `-${side}` : ''}`);\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}","/**\n * Swiper 9.3.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: May 15, 2023\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n","import { getDocument } from 'ssr-window';\nimport { createElement, elementChildren, setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\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) swiper.virtual.cache[index] = slideEl;\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\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 = swiper.activeIndex || 0;\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.slidesEl.querySelectorAll(`.${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.slidesEl.querySelectorAll(`.${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 swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\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 if (!swiper.params.initialSlide) {\n update();\n }\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}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { elementOffset, elementParents } from '../../shared/utils.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\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}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 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 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.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n 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}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.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.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\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 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\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 (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.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 paginationHTML += `<${params.bulletElement} 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 = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(params.clickableClass);\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.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 let {\n el\n } = swiper.pagination;\n if (!Array.isArray(el)) el = [el].filter(element => !!element);\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}","import { getDocument } from 'ssr-window';\nimport { createElement, elementOffset, nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\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.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.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\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(`.${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'](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(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\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', () => {\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'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(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}","import { elementChildren } from '../../shared/utils.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\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 } = swiper;\n elementChildren(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').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('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = (duration = swiper.params.speed) => {\n const {\n el\n } = swiper;\n el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').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}","import { getWindow } from 'ssr-window';\nimport { elementChildren, elementOffset, elementParents, getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\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 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) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / 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.el.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 = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\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 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 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\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 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = 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 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 return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\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 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 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 forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.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;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n 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 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 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 }\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(e);\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}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { elementTransitionEnd, nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\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 controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\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}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport { createElement, elementIndex } from '../../shared/utils.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\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 itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getRandomNumber(size = 16) {\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.nextEl && targetEl === swiper.navigation.nextEl) {\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 (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\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 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 = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\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 swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\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 if (swiper.isElement) {\n swiper.el.shadowEl.append(liveRegion);\n } else {\n swiper.el.append(liveRegion);\n }\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\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 = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\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 = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\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}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\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.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}","import { getWindow, getDocument } from 'ssr-window';\nimport { elementChildren } from '../../shared/utils.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\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.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\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.slidesEl.querySelector(`[data-swiper-slide-index=\"${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.slidesEl.querySelector(`[data-swiper-slide-index=\"${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}","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\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: true,\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 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 resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n 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 pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\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}","import { getDocument } from 'ssr-window';\nimport { elementChildren, isObject } from '../../shared/utils.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\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 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.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\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 // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\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 onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', 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}","import { elementTransitionEnd, now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\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 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 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({\n currentPos\n }) {\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 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}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\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 = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\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 };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\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.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\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 swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\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 swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\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}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\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}","import effectInit from '../../shared/effect-init.js';\nimport { createElement } from '../../shared/utils.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\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-${isHorizontal ? 'left' : 'top'}`);\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`);\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 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.slidesEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.slidesEl.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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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(90deg) 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(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${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}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress, params) => {\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(params, slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow(params, 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 const params = 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, params);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\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, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${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}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\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 // 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(${rotateX}deg) rotateY(${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(params, slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow(params, 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}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\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 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 r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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(params, 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}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\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 } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = 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 + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${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 const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow(params, 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 watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\nexport { paramsList };","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction extend(target, src) {\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 if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName = '') {\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className = '') {\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses, attrToProp, wrapperClass };","import { attrToProp, extend } from '../components-shared/utils.js';\nimport { paramsList } from '../components-shared/params-list.js';\nimport defaults from '../core/defaults.js';\n\nconst formatValue = (val) => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n return val;\n};\n\nconst modulesParamsList = [\n 'a11y',\n 'autoplay',\n 'controller',\n 'cards-effect',\n 'coverflow-effect',\n 'creative-effect',\n 'cube-effect',\n 'fade-effect',\n 'flip-effect',\n 'free-mode',\n 'grid',\n 'hash-navigation',\n 'history',\n 'keyboard',\n 'mousewheel',\n 'navigation',\n 'pagination',\n 'parallax',\n 'scrollbar',\n 'thumbs',\n 'virtual',\n 'zoom',\n];\n\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n\n const localParamsList = [...paramsList, 'on'];\n\n const allowedParams = localParamsList.map((key) => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach((paramName) => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({ name: propName, value: propValue });\n }\n attrsList.forEach((attr) => {\n const moduleParam = modulesParamsList.filter(\n (mParam) => attr.name.indexOf(`${mParam}-`) === 0,\n )[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = { enabled: true };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n\n extend(params, passedParams);\n\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {}),\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {}),\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {}),\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return { params, passedParams };\n}\n\nexport { getParams };\n","/**\n * Swiper Custom Element 9.3.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: May 15, 2023\n */\n\n/* eslint-disable spaced-comment */\nimport Swiper from 'swiper/bundle';\nimport { paramsList } from '../components-shared/params-list.js';\nimport { getParams } from './get-params.js';\nimport {\n needsScrollbar,\n needsNavigation,\n needsPagination,\n attrToProp,\n} from '../components-shared/utils.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\n\nconst SwiperFontCSS = `@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}`; const SwiperCSS = `:root{--swiper-theme-color:#007aff}.swiper,swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}:host(.swiper-vertical)>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight swiper-slide{height:auto}:host(.swiper-autoheight) .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}:host(.swiper-3d.swiper-css-mode) .swiper-wrapper{perspective:1200px}:host(.swiper-3d) .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d swiper-slide{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}:host(.swiper-css-mode)>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}:host(.swiper-css-mode)>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>swiper-slide{scroll-snap-align:start start}:host(.swiper-horizontal.swiper-css-mode)>.swiper-wrapper{scroll-snap-type:x mandatory}:host(.swiper-vertical.swiper-css-mode)>.swiper-wrapper{scroll-snap-type:y mandatory}:host(.swiper-centered)>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered>swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-centered.swiper-horizontal>swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}:host(.swiper-centered.swiper-horizontal)>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}:host(.swiper-centered.swiper-vertical)>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,swiper-container:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}:host(.swiper-virtual.swiper-css-mode) .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}:host(.swiper-virtual.swiper-css-mode.swiper-horizontal) .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}:host(.swiper-virtual.swiper-css-mode.swiper-vertical) .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,:host(.swiper-rtl) .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-prev:after,:host(.swiper-rtl) .swiper-button-next:after{content:'prev'}.swiper-button-next,:host(.swiper-rtl) .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,:host(.swiper-rtl) .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,:host(.swiper-horizontal.swiper-rtl) .swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}:host(.swiper-rtl) .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification,swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}:host(.swiper-free-mode)>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}:host(.swiper-grid)>.swiper-wrapper{flex-wrap:wrap}:host(.swiper-grid-column)>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode swiper-slide{transition-timing-function:ease-out}.swiper-fade swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade swiper-slide swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube swiper-slide swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev,.swiper-cube swiper-slide-next+swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip swiper-slide swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`;\n\nlet globalInjectStyles = true;\n\nconst addGlobalStyles = (preInit, swiper) => {\n let globalStyles = document.querySelector('style#swiper-element-styles');\n const shouldOverwrite = globalStyles && globalStyles.preInit && !preInit;\n if (!preInit && swiper) {\n swiper.cssLinks().forEach((url) => {\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n document.head.prepend(linkEl);\n });\n }\n if (!globalStyles || shouldOverwrite) {\n globalStyles = globalStyles || document.createElement('style');\n globalStyles.textContent = [SwiperFontCSS, swiper ? swiper.cssStyles() : ''].join('\\n'); // eslint-disable-line\n globalStyles.id = 'swiper-element-styles';\n globalStyles.preInit = preInit;\n document.head.prepend(globalStyles);\n }\n};\n\nclass DummyHTMLElement {}\n\nconst ClassToExtend =\n typeof window === 'undefined' || typeof HTMLElement === 'undefined'\n ? DummyHTMLElement\n : HTMLElement;\n\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n\n this.tempDiv = document.createElement('div');\n this.shadowEl = this.attachShadow({ mode: 'open' });\n }\n\n cssStyles() {\n return [\n globalInjectStyles ? SwiperCSS : '', // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : []),\n ].join('\\n');\n }\n\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n\n render() {\n if (this.rendered) return;\n if (globalInjectStyles) {\n // global styles\n addGlobalStyles(false, this);\n }\n\n // local styles\n const localStyles = this.cssStyles();\n if (localStyles.length) {\n this.stylesEl = document.createElement('style');\n this.stylesEl.textContent = localStyles;\n this.shadowEl.appendChild(this.stylesEl);\n }\n\n this.cssLinks().forEach((url) => {\n const linkExists = this.shadowEl.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowEl.appendChild(linkEl);\n });\n // prettier-ignore\n this.tempDiv.innerHTML = `\n