{"version":3,"file":"BmK-GerW.js","sources":["../../../../components/uikit/swiper/Slide.vue","../../../../node_modules/swiper/modules/mousewheel.mjs","../../../../node_modules/swiper/modules/scrollbar.mjs","../../../../node_modules/swiper/modules/zoom.mjs","../../../../node_modules/swiper/modules/thumbs.mjs","../../../../components/uikit/swiper/index.vue","../../../../composables/useScrollEvent.ts","../../../../composables/useSwiperAnalytics.ts","../../../../components/business/products/ProductsBlock.vue"],"sourcesContent":["\n\n\n\n\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n 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 (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n 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 getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n 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 const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\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();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n 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 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}\n\nexport { Thumb as default };\n","\n\n\n\n\n","export function useScrollEvent(\n $block: Ref,\n event: () => void,\n) {\n const isVisible = useElementVisibility($block);\n\n const unwatch = watch(() => isVisible.value, (value) => {\n if (value) {\n event();\n unwatch();\n }\n }, { immediate: true });\n\n return {\n isVisible,\n };\n}\n","import {\n SwiperOptions,\n Swiper as SwiperClass,\n} from 'swiper/types';\n\nimport { AnalyticsEvents } from '~/types/analytics';\n\ntype TSwiper = Ref<{\n swiper?: SwiperClass;\n}>\n\ninterface IOptions {\n chapter?: string\n id_chapter?: string\n item?: string\n chapter_index?: number\n segment_id?: number\n}\n\ninterface ISwiperOptions extends SwiperOptions {\n off?: boolean\n}\n\ninterface IBreakpoints {\n [width: number]: ISwiperOptions;\n [ratio: string]: ISwiperOptions;\n}\n\nexport function useSwiperAnalytics(\n $swiper: TSwiper,\n $block: Ref,\n allIds: Ref<(string | number)[] | (string | number)[][]>,\n options: IOptions,\n sliderBreakpoints?: IBreakpoints,\n isUse = true,\n\n) {\n if (!isUse) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const empty = () => {};\n\n return {\n event: empty,\n clickEvent: empty,\n };\n }\n\n const { $addEvent } = useNuxtApp();\n\n const event = sendEvent();\n\n const { isVisible } = useScrollEvent($block, event);\n\n function sendEvent() {\n const sendedIndexes = new Set();\n const sendedIds = new Set();\n\n return () => {\n if (!isVisible.value || !$swiper.value?.swiper) return;\n\n const { activeIndex, currentBreakpoint } = $swiper.value.swiper;\n\n if (sendedIndexes.has(activeIndex)) return;\n\n sendedIndexes.add(activeIndex);\n\n if (sliderBreakpoints) {\n const slidesPerView = (sliderBreakpoints[currentBreakpoint].slidesPerView ?? 1) as number;\n\n const count = Math.ceil(slidesPerView);\n const ids = allIds.value.slice(activeIndex, activeIndex + count)\n .filter((id) => !sendedIds.has(id)) as string[] | string[][];\n\n ids.forEach((id) => sendedIds.add(id));\n\n const idsString = (ids.reduce((result, id) => {\n if (Array.isArray(id)) {\n id.forEach((item) => {\n // eslint-disable-next-line no-param-reassign\n result += `${item};`;\n });\n\n return result;\n }\n\n // eslint-disable-next-line no-param-reassign\n result += `${id};`;\n\n return result;\n }, '') as string).slice(0, -1);\n\n if (idsString) {\n $addEvent(AnalyticsEvents.SwiperBlockView, {\n ...options,\n id_item: idsString,\n index: $swiper.value?.swiper.activeIndex,\n });\n }\n } else {\n $addEvent(AnalyticsEvents.SwiperBlockView, {\n ...options,\n id_item: allIds.value[activeIndex],\n index: activeIndex,\n });\n }\n };\n }\n\n function clickEvent(opts: {id_item?: string | number, index?: number, item?: string}) {\n const params = {\n ...options,\n id_item: opts.id_item,\n index: opts.index,\n };\n\n if (opts.item) {\n params.item = opts.item;\n }\n\n $addEvent(AnalyticsEvents.SwiperBlockClick, params);\n }\n\n return {\n event,\n clickEvent,\n };\n}\n","\n\n\n\n\n"],"names":["__default__","Mousewheel","_ref","swiper","extendParams","on","emit","window","getWindow","timeout","lastScrollTime","now","lastEventBeforeSnap","recentWheelEvents","normalize","e","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","params","handle","event","disableParentSwiper","targetEl","targetElContainsTarget","delta","rtlFactor","data","positions","prevEvent","ignoreWheelEvents","position","wasBeginning","wasEnd","firstEvent","snapToThreshold","nextTick","events","method","enable","disable","Scrollbar","document","getDocument","isTouched","dragTimeout","dragStartPos","dragSize","trackSize","divider","setTranslate","scrollbar","rtl","dragEl","el","progress","newSize","newPos","setTransition","duration","updateSize","getPointerPosition","setDragPosition","positionRatio","elementOffset","onDragStart","wrapperEl","onDragMove","onDragEnd","target","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","init","swiperEl","createElementIfNotDefined","classesToSelector","createElement","classesToTokens","destroy","makeElementsArray","subEl","_s","Zoom","currentScale","isScaling","fakeGestureTouched","fakeGestureMoved","evCache","gesture","image","velocity","scale","value","imageEl","slideEl","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","maxRatio","imageMaxRatio","getScaleOrigin","box","getSlideSelector","eventWithinSlide","slideSelector","eventWithinZoomContainer","selector","containerEl","onGestureStart","elementParents","originX","originY","onGestureChange","zoom","pointerIndex","cachedEv","onGestureEnd","onTouchStart","device","onTouchMove","getTranslate","scaledWidth","scaledHeight","scaleRatio","onTouchEnd","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","elementChildren","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","eventName","Thumb","initialized","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","thumbsParams","SwiperClass","isObject","thumbsSwiperParams","update","initial","slidesPerView","thumbsToActivate","thumbActiveClass","i","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","direction","newThumbsSlide","thumbs","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","props","__props","emits","__emit","breakpointStarted","prevWidth","nextWidth","isOff","ref","isNavEnabled","swiperRef","swiperKey","swiperLoop","prevRef","nextRef","modulesComp","computed","arr","A11y","Navigation","Pagination","AutoplayModule","FreemodeModule","MousewheelModule","ScrollbarlModule","ThumbsModule","ZoomModule","navigationComp","nav","controls","paginationComp","pagin","reload","width","updateSwiper","handleSwiper","handleSlideChange","handleBreakpoint","breakpointParams","keys","index","_a","slideNextTransitionEnd","slidePrevTransitionEnd","handleAfterInit","onMounted","watch","onUnmounted","__expose","useScrollEvent","$block","isVisible","useElementVisibility","unwatch","useSwiperAnalytics","$swiper","allIds","options","sliderBreakpoints","isUse","empty","$addEvent","useNuxtApp","sendEvent","sendedIndexes","sendedIds","activeIndex","currentBreakpoint","count","ids","id","idsString","result","item","AnalyticsEvents","_b","clickEvent","opts","isDesktop","useUiBreakpoints","isProductDTORes","p","_c","_d","goToNextPage","_e","navigateTo","handleProductClick","productId","handleSlideNext","handleSlidePrev"],"mappings":"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","x_google_ignoreList":[1,2,3,4]}