Your IP : 216.73.216.79


Current Path : /var/www/html/reddsis/node_modules/.vite/deps/
Upload File :
Current File : /var/www/html/reddsis/node_modules/.vite/deps/swiper_modules.js.map

{"version":3,"file":"swiper_modules.js","names":[],"sources":["../../swiper/modules/virtual.mjs","../../swiper/modules/keyboard.mjs","../../swiper/modules/mousewheel.mjs","../../swiper/shared/create-element-if-not-defined.mjs","../../swiper/modules/navigation.mjs","../../swiper/shared/classes-to-selector.mjs","../../swiper/modules/pagination.mjs","../../swiper/modules/scrollbar.mjs","../../swiper/modules/parallax.mjs","../../swiper/modules/zoom.mjs","../../swiper/modules/controller.mjs","../../swiper/modules/a11y.mjs","../../swiper/modules/history.mjs","../../swiper/modules/hash-navigation.mjs","../../swiper/modules/autoplay.mjs","../../swiper/modules/thumbs.mjs","../../swiper/modules/free-mode.mjs","../../swiper/modules/grid.mjs","../../swiper/modules/manipulation.mjs","../../swiper/shared/effect-init.mjs","../../swiper/shared/effect-target.mjs","../../swiper/shared/effect-virtual-transition-end.mjs","../../swiper/modules/effect-fade.mjs","../../swiper/modules/effect-cube.mjs","../../swiper/shared/create-shadow.mjs","../../swiper/modules/effect-flip.mjs","../../swiper/modules/effect-coverflow.mjs","../../swiper/modules/effect-creative.mjs","../../swiper/modules/effect-cards.mjs"],"sourcesContent":["import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { b as setCSSProperty, e as elementChildren, s as setInnerHTML, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      slidesPerViewAutoSlideSize: 320,\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        setInnerHTML(tempDOM, 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      setInnerHTML(slideEl, slide);\n    }\n    if (params.cache) {\n      swiper.virtual.cache[index] = slideEl;\n    }\n    return slideEl;\n  }\n  function update(force, beforeInit, forceActiveIndex) {\n    const {\n      slidesPerGroup,\n      centeredSlides,\n      slidesPerView,\n      loop: isLoop,\n      initialSlide\n    } = swiper.params;\n    if (beforeInit && !isLoop && initialSlide > 0) {\n      return;\n    }\n    const {\n      addSlidesBefore,\n      addSlidesAfter,\n      slidesPerViewAutoSlideSize\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesPerViewNumeric;\n    if (slidesPerView === 'auto') {\n      if (slidesPerViewAutoSlideSize) {\n        let swiperSize = swiper.size;\n        if (!swiperSize) {\n          swiperSize = swiper.isHorizontal() ? swiper.el.getBoundingClientRect().width : swiper.el.getBoundingClientRect().height;\n        }\n        slidesPerViewNumeric = Math.max(1, Math.ceil(swiperSize / slidesPerViewAutoSlideSize));\n      } else {\n        slidesPerViewNumeric = 1;\n      }\n    } else {\n      slidesPerViewNumeric = slidesPerView;\n    }\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerViewNumeric / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerViewNumeric + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerViewNumeric : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n          // shift cache indexes\n          Object.keys(swiper.virtual.cache).forEach(key => {\n            if (key > slidesIndexes) {\n              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n              delete swiper.virtual.cache[key];\n            }\n          });\n        }\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n        // shift cache indexes\n        Object.keys(swiper.virtual.cache).forEach(key => {\n          if (key > slidesIndexes) {\n            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n            delete swiper.virtual.cache[key];\n          }\n        });\n      }\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    update(false, true);\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { d as elementParents, f as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction 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      speed: undefined\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.isContentEditable || 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    const speed = swiper.params.keyboard.speed;\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(speed);\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(speed);\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(speed);\n      if (isPageUp || isArrowUp) swiper.slidePrev(speed);\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, h as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction 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              if (swiper.destroyed || !swiper.params) return;\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              if (swiper.destroyed || !swiper.params) return;\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs';\n\nconst arrowSvg = `<svg class=\"swiper-navigation-icon\" width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>`;\nfunction Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      addIcons: true,\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    arrowSvg\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {\n          const tempEl = document.createElement('div');\n          setInnerHTML(tempEl, arrowSvg);\n          el.appendChild(tempEl.querySelector('svg'));\n          tempEl.remove();\n        }\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes = '') {\n  // Escape all CSS selector special characters\n  return `.${classes.trim().replace(/([\\.:!+\\/()[\\]#>~*^$|=,'\"@{}\\\\])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, i as elementOuterSize, j as elementIndex, s as setInnerHTML, d as elementParents } from '../shared/utils.mjs';\n\nfunction 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  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function getMoveDirection(prevIndex, nextIndex, length) {\n    prevIndex = prevIndex % length;\n    nextIndex = nextIndex % length;\n    if (nextIndex === prevIndex + 1) {\n      return 'next';\n    } else if (nextIndex === prevIndex - 1) {\n      return 'previous';\n    }\n    return;\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n      if (moveDirection === 'next') {\n        swiper.slideNext();\n      } else if (moveDirection === 'previous') {\n        swiper.slidePrev();\n      } else {\n        swiper.slideToLoop(index);\n      }\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        setInnerHTML(subEl, paginationHTML || '');\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.find(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(...(params.clickableClass || '').split(' '));\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.classList.remove(...(params.clickableClass || '').split(' '));\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, k as classesToTokens, c as createElement, n as nextTick, f 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({\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.cancelable) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n      if (!el.length) return;\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n    }\n    disableDraggable();\n  }\n  on('changeDirection', () => {\n    if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n    const params = swiper.params.scrollbar;\n    let {\n      el\n    } = swiper.scrollbar;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock changeDirection', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid,\n      isElement\n    } = swiper;\n    const elements = elementChildren(el, elementsSelector);\n    if (swiper.isElement) {\n      elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n    }\n    elements.forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      el,\n      hostEl\n    } = swiper;\n    const elements = [...el.querySelectorAll(elementsSelector)];\n    if (swiper.isElement) {\n      elements.push(...hostEl.querySelectorAll(elementsSelector));\n    }\n    elements.forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, d as elementParents, f as elementOffset, l as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      limitToOriginalSize: false,\n      maxRatio: 3,\n      minRatio: 1,\n      panOnMouseMove: false,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let isPanningWithMouse = false;\n  let mousePanStart = {\n    x: 0,\n    y: 0\n  };\n  const mousePanSensitivity = -3; // Negative to invert pan direction\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getMaxRatio() {\n    const params = swiper.params.zoom;\n    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n      return Math.min(imageMaxRatio, maxRatio);\n    }\n    return maxRatio;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = getMaxRatio();\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  let allowTouchMoveTimeout;\n  function allowTouchMove() {\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n  }\n  function preventTouchMove() {\n    clearTimeout(allowTouchMoveTimeout);\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n    allowTouchMoveTimeout = setTimeout(() => {\n      if (swiper.destroyed) return;\n      allowTouchMove();\n    });\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    const isMouseEvent = e.pointerType === 'mouse';\n    const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n      return;\n    }\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) {\n      return;\n    }\n    if (!image.isTouched || !gesture.slideEl) {\n      if (isMousePan) onMouseMove(e);\n      return;\n    }\n    if (isMousePan) {\n      onMouseMove(e);\n      return;\n    }\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    preventTouchMove();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    evCache.length = 0;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function onMouseMove(e) {\n    // Only pan if zoomed in and mouse panning is enabled\n    if (currentScale <= 1 || !gesture.imageWrapEl) return;\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n    const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n    const matrix = new window.DOMMatrix(currentTransform);\n    if (!isPanningWithMouse) {\n      isPanningWithMouse = true;\n      mousePanStart.x = e.clientX;\n      mousePanStart.y = e.clientY;\n      image.startX = matrix.e;\n      image.startY = matrix.f;\n      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      return;\n    }\n    const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n    const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n    const scaledWidth = image.width * currentScale;\n    const scaledHeight = image.height * currentScale;\n    const slideWidth = gesture.slideWidth;\n    const slideHeight = gesture.slideHeight;\n    const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n    const maxX = -minX;\n    const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n    const maxY = -minY;\n    const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n    const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n    gesture.imageWrapEl.style.transitionDuration = '0ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n    mousePanStart.x = e.clientX;\n    mousePanStart.y = e.clientY;\n    image.startX = newX;\n    image.startY = newY;\n    image.currentX = newX;\n    image.currentY = newY;\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    gesture.maxRatio = getMaxRatio();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const prevScale = currentScale;\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n      image.touchesStart.x = undefined;\n      image.touchesStart.y = undefined;\n    }\n    const maxRatio = getMaxRatio();\n    zoom.scale = forceZoomRatio || maxRatio;\n    currentScale = forceZoomRatio || maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') {\n        translateX = image.currentX * zoom.scale / prevScale;\n        translateY = image.currentY * zoom.scale / prevScale;\n      } else {\n        translateX = diffX * zoom.scale;\n        translateY = diffY * zoom.scale;\n      }\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    image.currentX = translateX;\n    image.currentY = translateY;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    gesture.maxRatio = getMaxRatio();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    image.currentX = undefined;\n    image.currentY = undefined;\n    image.touchesStart.x = undefined;\n    image.touchesStart.y = undefined;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n    if (swiper.params.zoom.panOnMouseMove) {\n      mousePanStart = {\n        x: 0,\n        y: 0\n      };\n      if (isPanningWithMouse) {\n        isPanningWithMouse = false;\n        image.startX = 0;\n        image.startY = 0;\n      }\n    }\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, o as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction 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 controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n      controlElements.forEach(controlElement => {\n        if (!swiper.controller.control) swiper.controller.control = [];\n        if (controlElement && controlElement.swiper) {\n          swiper.controller.control.push(controlElement.swiper);\n        } else if (controlElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onControllerSwiper = e => {\n            swiper.controller.control.push(e.detail[0]);\n            swiper.update();\n            controlElement.removeEventListener(eventName, onControllerSwiper);\n          };\n          controlElement.addEventListener(eventName, onControllerSwiper);\n        }\n      });\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, j as elementIndex, m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs';\n\nfunction 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      containerRole: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null,\n      scrollOnFocus: true,\n      wrapperLiveRegion: true\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  let preventFocusHandler;\n  let focusTargetSlideEl;\n  let visibilityChangedTimestamp = new Date().getTime();\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    setInnerHTML(notification, message);\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 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.removeAttribute('aria-disabled');\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n      const prevEls = makeElementsArray(swiper.navigation.prevEl);\n      const nextEls = makeElementsArray(swiper.navigation.nextEl);\n      if (nextEls.includes(targetEl)) {\n        if (!(swiper.isEnd && !swiper.params.loop)) {\n          swiper.slideNext();\n        }\n        if (swiper.isEnd) {\n          notify(params.lastSlideMessage);\n        } else {\n          notify(params.nextSlideMessage);\n        }\n      }\n      if (prevEls.includes(targetEl)) {\n        if (!(swiper.isBeginning && !swiper.params.loop)) {\n          swiper.slidePrev();\n        }\n        if (swiper.isBeginning) {\n          notify(params.firstSlideMessage);\n        } else {\n          notify(params.prevSlideMessage);\n        }\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n  };\n  const handlePointerDown = e => {\n    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n      preventFocusHandler = true;\n    }\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    preventFocusHandler = false;\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const onVisibilityChange = e => {\n    visibilityChangedTimestamp = new Date().getTime();\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    focusTargetSlideEl = slideEl;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const isActive = (isVirtual ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : swiper.slides.indexOf(slideEl)) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    requestAnimationFrame(() => {\n      if (preventFocusHandler) return;\n      if (swiper.params.loop) {\n        swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0);\n      } else if (isVirtual) {\n        swiper.slideTo(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10)), 0);\n      } else {\n        swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0);\n      }\n      preventFocusHandler = false;\n    });\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n    if (params.containerRole) {\n      addElRole(containerEl, params.containerRole);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    addElId(wrapperEl, wrapperId);\n    if (params.wrapperLiveRegion) {\n      const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n      addElLive(wrapperEl, live);\n    }\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n    // Tab focus\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('focus', handleFocus, true);\n      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n      swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n    }\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History({\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.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation({\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.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\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: false,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime();\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let pausedByInteraction;\n  let pausedByPointerEnter;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n      return;\n    }\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const getTotalDelay = () => {\n    let totalDelay = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0) {\n      totalDelay = currentSlideDelay;\n    }\n    return totalDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = delayForce;\n    if (typeof delay === 'undefined') {\n      delay = getTotalDelay();\n      autoplayDelayTotal = delay;\n      autoplayDelayCurrent = delay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    autoplayStartTime = new Date().getTime();\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    pausedByPointerEnter = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByPointerEnter = false;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('pointerenter', onPointerEnter);\n      swiper.el.removeEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('_freeModeStaticRelease', () => {\n    if (pausedByTouch || pausedByInteraction) {\n      resume();\n    }\n  });\n  on('_freeModeNoMomentumRelease', () => {\n    if (!swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      autoplayTimeLeft = getTotalDelay();\n      autoplayDelayTotal = getTotalDelay();\n    }\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { p as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction 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 isVirtualEnabled() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return false;\n    return thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled;\n  }\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      if (thumbsParams.swiper.destroyed) {\n        initialized = false;\n        return false;\n      }\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    if (isVirtualEnabled()) {\n      swiper.thumbs.swiper.on('virtualUpdate', () => {\n        update(false, {\n          autoScroll: false\n        });\n      });\n    }\n    return true;\n  }\n  function update(initial, p) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\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 || isVirtualEnabled()) {\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    if (p?.autoScroll ?? true) {\n      autoScroll(initial ? 0 : undefined);\n    }\n  }\n  function autoScroll(slideSpeed) {\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    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, slideSpeed);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener(eventName, onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n","import { h as now, o as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction 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    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd({\n    currentPos\n  }) {\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      emit('_freeModeStaticRelease');\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n","function Grid({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  let wasMultiRow;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slides => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, Math.floor(slidesPerView) * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const unsetSlides = () => {\n    if (swiper.slides) {\n      swiper.slides.forEach(slide => {\n        if (slide.swiperSlideGridSet) {\n          slide.style.height = '';\n          slide.style[swiper.getDirectionLabel('margin-top')] = '';\n        }\n      });\n    }\n  };\n  const updateSlide = (i, slide, slides) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n    slide.swiperSlideGridSet = true;\n  };\n  const updateWrapperSize = (slideSize, snapGrid) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    if (!swiper.params.cssMode) {\n      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    }\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  const onInit = () => {\n    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n  };\n  const onUpdate = () => {\n    const {\n      params,\n      el\n    } = swiper;\n    const isMultiRow = params.grid && params.grid.rows > 1;\n    if (wasMultiRow && !isMultiRow) {\n      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n      numFullColumns = 1;\n      swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n      el.classList.add(`${params.containerModifierClass}grid`);\n      if (params.grid.fill === 'column') {\n        el.classList.add(`${params.containerModifierClass}grid-column`);\n      }\n      swiper.emitContainerClasses();\n    }\n    wasMultiRow = isMultiRow;\n  };\n  on('init', onInit);\n  on('update', onUpdate);\n  swiper.grid = {\n    initSlides,\n    unsetSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n","import { s as setInnerHTML } from '../shared/utils.mjs';\n\nfunction 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      setInnerHTML(tempDOM, slideEl);\n      slidesEl.append(tempDOM.children[0]);\n      setInnerHTML(tempDOM, '');\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      setInnerHTML(tempDOM, slideEl);\n      slidesEl.prepend(tempDOM.children[0]);\n      setInnerHTML(tempDOM, '');\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation({\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}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate _virtualUpdated', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n","import { o as elementTransitionEnd } from './utils.mjs';\n\nfunction 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.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade({\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}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, a as getRotateFix } from '../shared/utils.mjs';\n\nfunction 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-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const r = getRotateFix(swiper);\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs';\n\nfunction 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) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    const rotateFix = getRotateFix(swiper);\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs';\n\nfunction 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    const r = getRotateFix(swiper);\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, a as getRotateFix } from '../shared/utils.mjs';\n\nfunction 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    const rotateFix = getRotateFix(swiper);\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        let val = data.rotate[index] * Math.abs(progress * multiplier);\n        r[index] = val;\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards({\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      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${(params.rotate || swiper.isHorizontal() ? -25 : 0) * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      _loopSwapReset: false,\n      watchSlidesProgress: true,\n      loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,\n      centeredSlides: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n"],"mappings":"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"}