{"version":3,"file":"ui-vts-kit-ng-vts-carousel.mjs","sources":["../../components/carousel/lib/shared/dom.ts","../../components/carousel/lib/shared/utils.ts","../../components/carousel/lib/shared/get-support.ts","../../components/carousel/lib/shared/get-device.ts","../../components/carousel/lib/shared/get-browser.ts","../../components/carousel/lib/core/modules/resize/resize.ts","../../components/carousel/lib/core/modules/observer/observer.ts","../../components/carousel/lib/core/modules/autoplay/autoplay.ts","../../components/carousel/lib/shared/create-element-if-not-defined.ts","../../components/carousel/lib/core/modules/navigation/navigation.ts","../../components/carousel/lib/shared/classes-to-selector.ts","../../components/carousel/lib/core/modules/pagination/pagination.ts","../../components/carousel/lib/core/events-emitter.ts","../../components/carousel/lib/core/update/updateSize.ts","../../components/carousel/lib/core/update/updateSlides.ts","../../components/carousel/lib/core/update/updateAutoHeight.ts","../../components/carousel/lib/core/update/updateSlidesOffset.ts","../../components/carousel/lib/core/update/updateSlidesProgress.ts","../../components/carousel/lib/core/update/updateProgress.ts","../../components/carousel/lib/core/update/updateSlidesClasses.ts","../../components/carousel/lib/core/update/updateActiveIndex.ts","../../components/carousel/lib/core/update/updateClickedSlide.ts","../../components/carousel/lib/core/update/index.ts","../../components/carousel/lib/core/translate/getTranslate.ts","../../components/carousel/lib/core/translate/setTranslate.ts","../../components/carousel/lib/core/translate/minTranslate.ts","../../components/carousel/lib/core/translate/maxTranslate.ts","../../components/carousel/lib/core/translate/translateTo.ts","../../components/carousel/lib/core/translate/index.ts","../../components/carousel/lib/core/transition/setTransition.ts","../../components/carousel/lib/core/transition/transitionEmit.ts","../../components/carousel/lib/core/transition/transitionStart.ts","../../components/carousel/lib/core/transition/transitionEnd.ts","../../components/carousel/lib/core/transition/index.ts","../../components/carousel/lib/core/slide/slideTo.ts","../../components/carousel/lib/core/slide/slideToLoop.ts","../../components/carousel/lib/core/slide/slideNext.ts","../../components/carousel/lib/core/slide/slidePrev.ts","../../components/carousel/lib/core/slide/slideReset.ts","../../components/carousel/lib/core/slide/slideToClosest.ts","../../components/carousel/lib/core/slide/slideToClickedSlide.ts","../../components/carousel/lib/core/slide/index.ts","../../components/carousel/lib/core/loop/loopCreate.ts","../../components/carousel/lib/core/loop/loopFix.ts","../../components/carousel/lib/core/loop/loopDestroy.ts","../../components/carousel/lib/core/loop/index.ts","../../components/carousel/lib/core/grab-cursor/setGrabCursor.ts","../../components/carousel/lib/core/grab-cursor/unsetGrabCursor.ts","../../components/carousel/lib/core/grab-cursor/index.ts","../../components/carousel/lib/core/events/onTouchStart.ts","../../components/carousel/lib/core/events/onTouchMove.ts","../../components/carousel/lib/core/events/onTouchEnd.ts","../../components/carousel/lib/core/events/onResize.ts","../../components/carousel/lib/core/events/onClick.ts","../../components/carousel/lib/core/events/onScroll.ts","../../components/carousel/lib/core/events/index.ts","../../components/carousel/lib/core/breakpoints/setBreakpoint.ts","../../components/carousel/lib/core/breakpoints/getBreakpoint.ts","../../components/carousel/lib/core/breakpoints/index.ts","../../components/carousel/lib/core/classes/addClasses.ts","../../components/carousel/lib/core/classes/removeClasses.ts","../../components/carousel/lib/core/classes/index.ts","../../components/carousel/lib/core/images/loadImage.ts","../../components/carousel/lib/core/images/preloadImages.ts","../../components/carousel/lib/core/images/index.ts","../../components/carousel/lib/core/check-overflow/index.ts","../../components/carousel/lib/core/defaults.ts","../../components/carousel/lib/core/moduleExtendParams.ts","../../components/carousel/lib/core/core.ts","../../components/carousel/lib/core/modules/virtual/virtual.ts","../../components/carousel/lib/core/modules/keyboard/keyboard.ts","../../components/carousel/lib/core/modules/mousewheel/mousewheel.ts","../../components/carousel/lib/core/modules/scrollbar/scrollbar.ts","../../components/carousel/lib/core/modules/parallax/parallax.ts","../../components/carousel/lib/core/modules/zoom/zoom.ts","../../components/carousel/lib/core/modules/lazy/lazy.ts","../../components/carousel/lib/core/modules/controller/controller.ts","../../components/carousel/lib/core/modules/a11y/a11y.ts","../../components/carousel/lib/core/modules/history/history.ts","../../components/carousel/lib/core/modules/hash-navigation/hash-navigation.ts","../../components/carousel/lib/core/modules/thumbs/thumbs.ts","../../components/carousel/lib/core/modules/free-mode/free-mode.ts","../../components/carousel/lib/core/modules/grid/grid.ts","../../components/carousel/lib/core/modules/manipulation/methods/appendSlide.ts","../../components/carousel/lib/core/modules/manipulation/methods/prependSlide.ts","../../components/carousel/lib/core/modules/manipulation/methods/addSlide.ts","../../components/carousel/lib/core/modules/manipulation/methods/removeSlide.ts","../../components/carousel/lib/core/modules/manipulation/methods/removeAllSlides.ts","../../components/carousel/lib/core/modules/manipulation/manipulation.ts","../../components/carousel/lib/shared/effect-init.ts","../../components/carousel/lib/shared/effect-target.ts","../../components/carousel/lib/shared/effect-virtual-transition-end.ts","../../components/carousel/lib/core/modules/effect-fade/effect-fade.ts","../../components/carousel/lib/core/modules/effect-cube/effect-cube.ts","../../components/carousel/lib/shared/create-shadow.ts","../../components/carousel/lib/core/modules/effect-flip/effect-flip.ts","../../components/carousel/lib/carousel.ts","../../components/carousel/lib/utils/params-list.ts","../../components/carousel/lib/utils/utils.ts","../../components/carousel/lib/utils/get-params.ts","../../components/carousel/carousel-slide.directive.ts","../../components/carousel/lib/utils/events.ts","../../components/carousel/carousel-pagination.component.ts","../../components/carousel/carousel.component.ts","../../components/carousel/carousel.component.html","../../components/carousel/carousel.module.ts","../../components/carousel/ui-vts-kit-ng-vts-carousel.ts"],"sourcesContent":["//@ts-nocheck\nimport {\n  $,\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n} from 'dom7';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\n\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform\n        .split(', ')\n        .map(a => a.replace(',', '.'))\n        .join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix =\n      curStyle.MozTransform ||\n      curStyle.OTransform ||\n      curStyle.MsTransform ||\n      curStyle.msTransform ||\n      curStyle.transform ||\n      curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return (\n    typeof o === 'object' &&\n    o !== null &&\n    o.constructor &&\n    Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n  );\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__carousel__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__carousel__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ carousel, targetPosition, side }) {\n  const window = getWindow();\n  const startPosition = -carousel.translate;\n  let startTime = null;\n  let time;\n  const duration = carousel.params.speed;\n\n  carousel.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(carousel.cssModeFrameID);\n\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    carousel.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      carousel.wrapperEl.style.overflow = 'hidden';\n      carousel.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        carousel.wrapperEl.style.overflow = '';\n        carousel.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(carousel.cssModeFrameID);\n      return;\n    }\n    carousel.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\n\nexport {\n  animateCSSModeScroll,\n  deleteProps,\n  nextTick,\n  now,\n  getTranslate,\n  isObject,\n  extend,\n  getComputedStyle,\n  setCSSProperty\n};\n","//@ts-nocheck\nimport { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n    touch: !!(\n      'ontouchstart' in window ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)\n    ),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    })(),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    })()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nexport { getSupport };\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = [\n    '1024x1366',\n    '1366x1024',\n    '834x1194',\n    '1194x834',\n    '834x1112',\n    '1112x834',\n    '768x1024',\n    '1024x768',\n    '820x1180',\n    '1180x820',\n    '810x1080',\n    '1080x810'\n  ];\n  if (\n    !ipad &&\n    macos &&\n    support.touch &&\n    iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nexport { getDevice };\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nexport { getBrowser };\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nexport default function Resize({ carousel, on, emit }) {\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n\n  const resizeHandler = () => {\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const { width, height } = carousel;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(({ contentBoxSize, contentRect, target }) => {\n          if (target && target !== carousel.el) return;\n          newWidth = contentRect\n            ? contentRect.width\n            : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect\n            ? contentRect.height\n            : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(carousel.el);\n  };\n\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && carousel.el) {\n      observer.unobserve(carousel.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (carousel.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nexport default function Observer({ carousel, extendParams, on, emit }) {\n  const observers = [];\n  const window = getWindow();\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!carousel.params.observer) return;\n    if (carousel.params.observeParents) {\n      const containerParents = carousel.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(carousel.$el[0], {\n      childList: carousel.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(carousel.$wrapperEl[0], { attributes: false });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n","//@ts-nocheck\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../../shared/utils';\n\nexport default function Autoplay({ carousel, extendParams, on, emit }) {\n  let timeout;\n\n  carousel.autoplay = {\n    running: false,\n    paused: false\n  };\n\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    if (!carousel.size) {\n      carousel.autoplay.running = false;\n      carousel.autoplay.paused = false;\n      return;\n    }\n    const $activeSlideEl = carousel.slides.eq(carousel.activeIndex);\n    let delay = carousel.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-carousel-autoplay')) {\n      delay = $activeSlideEl.attr('data-carousel-autoplay') || carousel.params.autoplay.delay;\n    }\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n      if (carousel.params.autoplay.reverseDirection) {\n        if (carousel.params.loop) {\n          carousel.loopFix();\n          autoplayResult = carousel.slidePrev(carousel.params.speed, true, true);\n          emit('autoplay');\n        } else if (!carousel.isBeginning) {\n          autoplayResult = carousel.slidePrev(carousel.params.speed, true, true);\n          emit('autoplay');\n        } else if (!carousel.params.autoplay.stopOnLastSlide) {\n          autoplayResult = carousel.slideTo(\n            carousel.slides.length - 1,\n            carousel.params.speed,\n            true,\n            true\n          );\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (carousel.params.loop) {\n        carousel.loopFix();\n        autoplayResult = carousel.slideNext(carousel.params.speed, true, true);\n        emit('autoplay');\n      } else if (!carousel.isEnd) {\n        autoplayResult = carousel.slideNext(carousel.params.speed, true, true);\n        emit('autoplay');\n      } else if (!carousel.params.autoplay.stopOnLastSlide) {\n        autoplayResult = carousel.slideTo(0, carousel.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n      if (carousel.params.cssMode && carousel.autoplay.running) run();\n      else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (carousel.autoplay.running) return false;\n    carousel.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n  function stop() {\n    if (!carousel.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n    carousel.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n  function pause(speed) {\n    if (!carousel.autoplay.running) return;\n    if (carousel.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    carousel.autoplay.paused = true;\n    if (speed === 0 || !carousel.params.autoplay.waitForTransition) {\n      carousel.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        carousel.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n  function onVisibilityChange() {\n    const document = getDocument();\n    if (document.visibilityState === 'hidden' && carousel.autoplay.running) {\n      pause();\n    }\n    if (document.visibilityState === 'visible' && carousel.autoplay.paused) {\n      run();\n      carousel.autoplay.paused = false;\n    }\n  }\n  function onTransitionEnd(e) {\n    if (!carousel || carousel.destroyed || !carousel.$wrapperEl) return;\n    if (e.target !== carousel.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      carousel.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    carousel.autoplay.paused = false;\n    if (!carousel.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n  function onMouseEnter() {\n    if (carousel.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      emit('autoplayPause');\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      carousel.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n  function onMouseLeave() {\n    if (carousel.params.autoplay.disableOnInteraction) {\n      return;\n    }\n    carousel.autoplay.paused = false;\n    emit('autoplayResume');\n    run();\n  }\n  function attachMouseEvents() {\n    if (carousel.params.autoplay.pauseOnMouseEnter) {\n      carousel.$el.on('mouseenter', onMouseEnter);\n      carousel.$el.on('mouseleave', onMouseLeave);\n      carousel.autoplay.pauseOnMouseEnter = true;\n    }\n  }\n  function detachMouseEvents() {\n    carousel.$el.off('mouseenter', onMouseEnter);\n    carousel.$el.off('mouseleave', onMouseLeave);\n    carousel.autoplay.pauseOnMouseEnter = false;\n  }\n\n  on('init', () => {\n    if (carousel.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('update', () => {\n    if (!carousel.params.autoplay.enabled && carousel.autoplay.running) {\n      stop();\n    } else if (carousel.params.autoplay.enabled && !carousel.autoplay.running) {\n      start();\n    }\n    if (!carousel.params.autoplay.pauseOnMouseEnter && carousel.autoplay.pauseOnMouseEnter) {\n      detachMouseEvents();\n    } else if (carousel.params.autoplay.pauseOnMouseEnter && !carousel.autoplay.pauseOnMouseEnter) {\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (carousel.autoplay.running) {\n      if (internal || !carousel.params.autoplay.disableOnInteraction) {\n        carousel.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (carousel.autoplay.running) {\n      if (carousel.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (\n      carousel.params.cssMode &&\n      carousel.autoplay.paused &&\n      !carousel.params.autoplay.disableOnInteraction\n    ) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    if (carousel.autoplay.running) {\n      stop();\n    }\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n\n  Object.assign(carousel.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}\n","//@ts-nocheck\nimport { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(carousel, originalParams, params, checkProps) {\n  const document = getDocument();\n  if (carousel.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = carousel.$el.children(`.${checkProps[key]}`)[0];\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          carousel.$el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n","//@ts-nocheck\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\nimport $ from '../../../shared/dom';\n\nexport default function Navigation({ carousel, extendParams, on, emit }) {\n  const pfx = 'vts-carousel-navigation';\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'vts-carousel-button-disabled',\n      hiddenClass: 'vts-carousel-button-hidden',\n      lockClass: 'vts-carousel-button-lock',\n      navigationDisabledClass: `${pfx}-disabled`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      position: `inner`\n    }\n  });\n\n  carousel.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n    if (el) {\n      $el = $(el);\n      if (\n        carousel.params.uniqueNavElements &&\n        typeof el === 'string' &&\n        $el.length > 1 &&\n        carousel.$el.find(el).length === 1\n      ) {\n        $el = carousel.$el.find(el);\n      }\n    }\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = carousel.params.navigation;\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n      if (carousel.params.watchOverflow && carousel.enabled) {\n        $el[carousel.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n  function update() {\n    // Update Navigation Buttons\n    const { $nextEl, $prevEl } = carousel.navigation;\n\n    // Direction\n    const params = carousel.params.navigation;\n    const removeCls = [\n      ...['-inner', '-edge'].map(suffix => `${pfx}${suffix}`),\n      params.horizontalClass,\n      params.verticalClass\n    ].join(' ');\n    if ($nextEl) {\n      $nextEl.removeClass(removeCls);\n      $nextEl.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      $nextEl.addClass(`${pfx}-${params.position}`);\n    }\n    if ($prevEl) {\n      $prevEl.removeClass(removeCls);\n      $prevEl.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      $prevEl.addClass(`${pfx}-${params.position}`);\n    }\n\n    toggleEl($prevEl, carousel.isBeginning && !carousel.params.rewind);\n    toggleEl($nextEl, carousel.isEnd && !carousel.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (carousel.isBeginning && !carousel.params.loop && !carousel.params.rewind) return;\n    carousel.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (carousel.isEnd && !carousel.params.loop && !carousel.params.rewind) return;\n    carousel.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = carousel.params.navigation;\n\n    if (!params.nextEl) params.nextEl = 'vts-carousel-button-next';\n\n    if (!params.nextEl) params.prevEl = 'vts-carousel-button-prev';\n\n    carousel.params.navigation = createElementIfNotDefined(\n      carousel,\n      carousel.originalParams.navigation,\n      carousel.params.navigation,\n      {\n        nextEl: 'vts-carousel-button-next',\n        prevEl: 'vts-carousel-button-prev'\n      }\n    );\n    if (!(params.nextEl || params.prevEl)) return;\n\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(carousel.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!carousel.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n  function destroy() {\n    const { $nextEl, $prevEl } = carousel.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(carousel.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(carousel.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    if (carousel.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n      carousel.navigation.enabled = true;\n    }\n  });\n  on('update', () => {\n    const { enabled } = carousel.params.navigation;\n    if (!enabled && !!carousel.navigation.enabled) disable();\n    if (enabled && !carousel.navigation.enabled) enable();\n    update();\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const { $nextEl, $prevEl } = carousel.navigation;\n    if ($nextEl) {\n      $nextEl[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.navigation.lockClass);\n    }\n    if ($prevEl) {\n      $prevEl[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const { $nextEl, $prevEl } = carousel.navigation;\n    const targetEl = e.target;\n    if (\n      carousel.params.navigation.hideOnClick &&\n      !$(targetEl).is($prevEl) &&\n      !$(targetEl).is($nextEl)\n    ) {\n      if (\n        carousel.pagination &&\n        carousel.params.pagination &&\n        carousel.params.pagination.clickable &&\n        (carousel.pagination.el === targetEl || carousel.pagination.el.contains(targetEl))\n      )\n        return;\n      let isHidden;\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(carousel.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(carousel.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      if ($nextEl) {\n        $nextEl.toggleClass(carousel.params.navigation.hiddenClass);\n      }\n      if ($prevEl) {\n        $prevEl.toggleClass(carousel.params.navigation.hiddenClass);\n      }\n    }\n  });\n\n  const enable = () => {\n    carousel.$el.removeClass(carousel.params.navigation.navigationDisabledClass);\n    init();\n    update();\n    carousel.navigation.enabled = true;\n  };\n\n  const disable = () => {\n    carousel.$el.addClass(carousel.params.navigation.navigationDisabledClass);\n    destroy();\n    carousel.navigation.enabled = false;\n  };\n\n  Object.assign(carousel.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n","//@ts-nocheck\nexport default function classesToSelector(classes = '') {\n  return `.${classes\n    .trim()\n    .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n    .replace(/ /g, '.')}`;\n}\n","//@ts-nocheck\nimport $ from '../../../shared/dom';\nimport classesToSelector from '../../../shared/classes-to-selector';\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\n\nexport default function Pagination({ carousel, extendParams, on, emit }) {\n  const pfx = 'vts-carousel-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', // '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\n  carousel.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return (\n      !carousel.params.pagination.el ||\n      !carousel.pagination.el ||\n      !carousel.pagination.$el ||\n      carousel.pagination.$el.length === 0\n    );\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const { bulletActiveClass } = carousel.params.pagination;\n    $bulletEl[position]()\n      .addClass(`${bulletActiveClass}-${position}`)\n      [position]()\n      .addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = carousel.rtl;\n    const params = carousel.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength =\n      carousel.virtual && carousel.params.virtual.enabled\n        ? carousel.virtual.slides.length\n        : carousel.slides.length;\n    const $el = carousel.pagination.$el;\n    // Direction\n    $el.removeClass([params.verticalClass, params.horizontalClass].join(' '));\n    $el.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    // Current/Total\n    let current;\n    const total = carousel.params.loop\n      ? Math.ceil((slidesLength - carousel.loopedSlides * 2) / carousel.params.slidesPerGroup)\n      : carousel.snapGrid.length;\n    if (carousel.params.loop) {\n      current = Math.ceil(\n        (carousel.activeIndex - carousel.loopedSlides) / carousel.params.slidesPerGroup\n      );\n      if (current > slidesLength - 1 - carousel.loopedSlides * 2) {\n        current -= slidesLength - carousel.loopedSlides * 2;\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && carousel.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof carousel.snapIndex !== 'undefined') {\n      current = carousel.snapIndex;\n    } else {\n      current = carousel.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets') {\n      if (carousel.pagination.bullets && carousel.pagination.bullets.length > 0) {\n        const bullets = carousel.pagination.bullets;\n        const offsetProp = rtl ? 'right' : 'left';\n        let firstIndex;\n        let lastIndex;\n        let midIndex;\n\n        // Reset default styles and class\n        $el.css('width', null);\n        $el.css('height', null);\n        bullets.css(offsetProp, null);\n        bullets.css('top', null);\n        $el.removeClass(`${params.modifierClass}${params.type}-dynamic`);\n\n        bullets.removeClass(\n          ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n            .map(suffix => `${params.bulletActiveClass}${suffix}`)\n            .join(' ')\n        );\n\n        // Detect changes\n        if (params.dynamicBullets) {\n          bulletSize = bullets.eq(0)[carousel.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n          $el.css(\n            carousel.isHorizontal() ? 'width' : 'height',\n            `${bulletSize * (params.dynamicMainBullets + 4)}px`\n          );\n          if (params.dynamicMainBullets > 1 && carousel.previousIndex !== undefined) {\n            dynamicBulletIndex += current - (carousel.previousIndex - carousel.loopedSlides || 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          const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n          const bulletsOffset =\n            (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n          bullets.css(carousel.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n          $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n        }\n\n        if ($el.length > 1) {\n          bullets.each(bullet => {\n            const $bullet = $(bullet);\n            const bulletIndex = $bullet.index();\n            if (bulletIndex === current) {\n              $bullet.addClass(params.bulletActiveClass);\n            }\n            if (params.dynamicBullets) {\n              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n                $bullet.addClass(`${params.bulletActiveClass}-main`);\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.eq(current);\n          const bulletIndex = $bullet.index();\n          $bullet.addClass(params.bulletActiveClass);\n          if (params.dynamicBullets) {\n            const $firstDisplayedBullet = bullets.eq(firstIndex);\n            const $lastDisplayedBullet = bullets.eq(lastIndex);\n            for (let i = firstIndex; i <= lastIndex; i += 1) {\n              bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (carousel.params.loop) {\n              if (bulletIndex >= bullets.length) {\n                for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                  bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n                }\n                bullets\n                  .eq(bullets.length - params.dynamicMainBullets - 1)\n                  .addClass(`${params.bulletActiveClass}-prev`);\n              } else {\n                setSideBullets($firstDisplayedBullet, 'prev');\n                setSideBullets($lastDisplayedBullet, 'next');\n              }\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          }\n        }\n      }\n\n      if (params.clickable) {\n        $el.addClass(params.clickableClass);\n        $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n          e.preventDefault();\n          let index = $(this).index() * carousel.params.slidesPerGroup;\n          if (carousel.params.loop) index += carousel.loopedSlides;\n          carousel.slideTo(index);\n        });\n      } else {\n        $el.removeClass(params.clickableClass);\n        $el.off('click', classesToSelector(params.bulletClass));\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el\n        .find(classesToSelector(params.currentClass))\n        .text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = carousel.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = carousel.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      $el\n        .find(classesToSelector(params.progressbarFillClass))\n        .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n        .transition(carousel.params.speed);\n    }\n\n    // Not happening\n    // if (params.type === 'custom' && params.renderCustom) {\n    //   $el.html(params.renderCustom(carousel, current + 1, total));\n    //   emit('paginationRender', $el[0]);\n    // } else {\n    //   emit('paginationUpdate', $el[0]);\n    // }\n\n    if (carousel.params.watchOverflow && carousel.enabled) {\n      $el[carousel.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = carousel.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength =\n      carousel.virtual && carousel.params.virtual.enabled\n        ? carousel.virtual.slides.length\n        : carousel.slides.length;\n\n    const $el = carousel.pagination.$el;\n    let paginationHTML = '';\n\n    if (carousel.pagination.prevParams?.type) {\n      $el.removeClass(params.modifierClass + carousel.pagination.prevParams.type);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = carousel.params.loop\n        ? Math.ceil((slidesLength - carousel.loopedSlides * 2) / carousel.params.slidesPerGroup)\n        : carousel.snapGrid.length;\n\n      if (params.dynamicBullets) {\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n\n      if (\n        carousel.params.freeMode &&\n        carousel.params.freeMode.enabled &&\n        !carousel.params.loop &&\n        numberOfBullets > slidesLength\n      ) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(carousel, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n\n      carousel.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(\n          carousel,\n          params.currentClass,\n          params.totalClass\n        );\n      } else {\n        paginationHTML =\n          `<span class=\"${params.currentClass}\"></span>` +\n          ' / ' +\n          `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.progressbarOpposite) {\n        $el.addClass(params.progressbarOppositeClass);\n      }\n\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(carousel, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      emit('paginationRender', carousel.pagination.$el[0]);\n    }\n    carousel.pagination.prevParams = { ...params };\n  }\n  function init() {\n    carousel.params.pagination = createElementIfNotDefined(\n      carousel,\n      carousel.originalParams.pagination,\n      carousel.params.pagination,\n      { el: 'vts-carousel-pagination' }\n    );\n    const params = carousel.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (carousel.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = carousel.$el.find(params.el);\n      // check if it belongs to another nested carousel\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.vts-carousel')[0] !== carousel.el) return false;\n          return true;\n        });\n      }\n    }\n\n    Object.assign(carousel.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!carousel.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n  function destroy() {\n    const params = carousel.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = carousel.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    if (carousel.pagination.bullets && carousel.pagination.bullets.removeClass)\n      carousel.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    if (carousel.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n      carousel.pagination.enabled = true;\n    }\n  });\n  on('update', () => {\n    const { enabled, type, renderBullet, renderCustom, renderFraction, renderProgressbar } =\n      carousel.params.pagination;\n    const {\n      type: oType,\n      renderBullet: oRenderBullet,\n      renderCustom: oRenderCustom,\n      renderFraction: oRenderFraction,\n      renderProgressbar: oRenderProgressbar\n    } = carousel.pagination.prevParams || {};\n    if (!enabled && !!carousel.pagination.enabled) disable();\n    if (enabled && !carousel.pagination.enabled) enable();\n\n    if (\n      type !== oType ||\n      renderBullet !== oRenderBullet ||\n      renderCustom !== oRenderCustom ||\n      renderFraction !== oRenderFraction\n    ) {\n      render();\n    }\n    update();\n  });\n  on('activeIndexChange', () => {\n    if (carousel.params.loop) {\n      update();\n    } else if (typeof carousel.snapIndex === 'undefined') {\n      update();\n    }\n    update();\n  });\n  on('snapIndexChange', () => {\n    if (!carousel.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (carousel.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!carousel.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const { $el } = carousel.pagination;\n    if ($el) {\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.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 } = carousel.pagination;\n    if (\n      carousel.params.pagination.el &&\n      carousel.params.pagination.hideOnClick &&\n      $el &&\n      $el.length > 0 &&\n      !$(targetEl).hasClass(carousel.params.pagination.bulletClass)\n    ) {\n      if (\n        carousel.navigation &&\n        ((carousel.navigation.nextEl && targetEl === carousel.navigation.nextEl) ||\n          (carousel.navigation.prevEl && targetEl === carousel.navigation.prevEl))\n      )\n        return;\n      const isHidden = $el.hasClass(carousel.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      $el.toggleClass(carousel.params.pagination.hiddenClass);\n    }\n  });\n\n  const enable = () => {\n    carousel.$el.removeClass(carousel.params.pagination.paginationDisabledClass);\n    if (carousel.pagination.$el) {\n      carousel.pagination.$el.removeClass(carousel.params.pagination.paginationDisabledClass);\n    }\n    init();\n    render();\n    update();\n    carousel.pagination.enabled = true;\n  };\n\n  const disable = () => {\n    carousel.$el.addClass(carousel.params.pagination.paginationDisabledClass);\n    if (carousel.pagination.$el) {\n      carousel.pagination.$el.addClass(carousel.params.pagination.paginationDisabledClass);\n    }\n    destroy();\n    carousel.pagination.enabled = false;\n  };\n\n  Object.assign(carousel.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n","//@ts-nocheck\n/* eslint-disable no-underscore-dangle */\n\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (\n            eventHandler === handler ||\n            (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n          ) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n","//@ts-nocheck\nexport default function updateSize() {\n  const carousel = this;\n  let width;\n  let height;\n  const $el = carousel.$el;\n  if (typeof carousel.params.width !== 'undefined' && carousel.params.width !== null) {\n    width = carousel.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof carousel.params.height !== 'undefined' && carousel.params.height !== null) {\n    height = carousel.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && carousel.isHorizontal()) || (height === 0 && carousel.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width =\n    width -\n    parseInt($el.css('padding-left') || 0, 10) -\n    parseInt($el.css('padding-right') || 0, 10);\n  height =\n    height -\n    parseInt($el.css('padding-top') || 0, 10) -\n    parseInt($el.css('padding-bottom') || 0, 10);\n\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n\n  Object.assign(carousel, {\n    width,\n    height,\n    size: carousel.isHorizontal() ? width : height\n  });\n}\n","//@ts-nocheck\nimport { setCSSProperty } from '../../shared/utils';\n\nexport default function updateSlides() {\n  const carousel = this;\n  function getDirectionLabel(property) {\n    if (carousel.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom',\n    }[property];\n  }\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n\n  const params = carousel.params;\n\n  const { $wrapperEl, size: carouselSize, rtlTranslate: rtl, wrongRTL } = carousel;\n  const isVirtual = carousel.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? carousel.virtual.slides.length : carousel.slides.length;\n  const slides = $wrapperEl.children(`.${carousel.params.slideClass}`);\n  const slidesLength = isVirtual ? carousel.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(carousel);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(carousel);\n  }\n\n  const previousSnapGridLength = carousel.snapGrid.length;\n  const previousSlidesGridLength = carousel.slidesGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof carouselSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * carouselSize;\n  }\n\n  carousel.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-before', '');\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && carousel.grid;\n  if (gridEnabled) {\n    carousel.grid.initSlides(slidesLength);\n  }\n\n  // Calc slides\n  let slideSize;\n\n  const shouldResetSlideSize =\n    params.slidesPerView === 'auto' &&\n    params.breakpoints &&\n    Object.keys(params.breakpoints).filter(key => {\n      return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n    }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (gridEnabled) {\n      carousel.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = carousel.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const { clientWidth, offsetWidth } = slide[0];\n          slideSize =\n            width +\n            paddingLeft +\n            paddingRight +\n            marginLeft +\n            marginRight +\n            (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (carouselSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        // Reset\n        slides[i].style['width'] = '';\n        slides[i].style['height'] = '';\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].carouselSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0)\n        slidePosition = slidePosition - carouselSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - carouselSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (\n        (index - Math.min(carousel.params.slidesPerGroupSkip, index)) %\n          carousel.params.slidesPerGroup ===\n        0\n      )\n        snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    carousel.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  carousel.virtualSize = Math.max(carousel.virtualSize, carouselSize) + offsetAfter;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${carousel.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${carousel.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    carousel.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= carousel.virtualSize - carouselSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n\n    if (\n      Math.floor(carousel.virtualSize - carouselSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n      1\n    ) {\n      snapGrid.push(carousel.virtualSize - carouselSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    const key = carousel.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides\n      .filter((_, slideIndex) => {\n        if (!params.cssMode) return true;\n        if (slideIndex === slides.length - 1) {\n          return false;\n        }\n        return true;\n      })\n      .css({ [key]: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - carouselSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < carouselSize) {\n      const allSlidesOffset = (carouselSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(carousel, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(\n      carousel.wrapperEl,\n      '--carousel-centered-offset-after',\n      `${carousel.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`\n    );\n    const addToSnapGrid = -carousel.snapGrid[0];\n    const addToSlidesGrid = -carousel.slidesGrid[0];\n    carousel.snapGrid = carousel.snapGrid.map(v => v + addToSnapGrid);\n    carousel.slidesGrid = carousel.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n\n  if (slidesLength !== previousSlidesLength) {\n    carousel.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (carousel.params.watchOverflow) carousel.checkOverflow();\n    carousel.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    carousel.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress) {\n    carousel.updateSlidesOffset();\n  }\n\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = carousel.$el.hasClass(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) carousel.$el.addClass(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      carousel.$el.removeClass(backFaceHiddenClass);\n    }\n  }\n}\n","//@ts-nocheck\nimport $ from '../../shared/dom';\n\nexport default function updateAutoHeight(speed) {\n  const carousel = this;\n  const activeSlides = [];\n  const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    carousel.setTransition(speed);\n  } else if (speed === true) {\n    carousel.setTransition(carousel.params.speed);\n  }\n\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return carousel.slides.filter(\n        el => parseInt(el.getAttribute('data-carousel-slide-index'), 10) === index\n      )[0];\n    }\n    return carousel.slides.eq(index)[0];\n  };\n  // Find slides currently in view\n  if (carousel.params.slidesPerView !== 'auto' && carousel.params.slidesPerView > 1) {\n    if (carousel.params.centeredSlides) {\n      (carousel.visibleSlides || $([])).each(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(carousel.params.slidesPerView); i += 1) {\n        const index = carousel.activeIndex + i;\n        if (index > carousel.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(carousel.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) carousel.$wrapperEl.css('height', `${newHeight}px`);\n}\n","//@ts-nocheck\nexport default function updateSlidesOffset() {\n  const carousel = this;\n  const slides = carousel.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].carouselSlideOffset = carousel.isHorizontal()\n      ? slides[i].offsetLeft\n      : slides[i].offsetTop;\n  }\n}\n","//@ts-nocheck\nimport $ from '../../shared/dom';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n  const carousel = this;\n  const params = carousel.params;\n\n  const { slides, rtlTranslate: rtl, snapGrid } = carousel;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].carouselSlideOffset === 'undefined') carousel.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  carousel.visibleSlidesIndexes = [];\n  carousel.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.carouselSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].carouselSlideOffset;\n    }\n\n    const slideProgress =\n      (offsetCenter + (params.centeredSlides ? carousel.minTranslate() : 0) - slideOffset) /\n      (slide.carouselSlideSize + params.spaceBetween);\n    const originalSlideProgress =\n      (offsetCenter -\n        snapGrid[0] +\n        (params.centeredSlides ? carousel.minTranslate() : 0) -\n        slideOffset) /\n      (slide.carouselSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + carousel.slidesSizesGrid[i];\n    const isVisible =\n      (slideBefore >= 0 && slideBefore < carousel.size - 1) ||\n      (slideAfter > 1 && slideAfter <= carousel.size) ||\n      (slideBefore <= 0 && slideAfter >= carousel.size);\n    if (isVisible) {\n      carousel.visibleSlides.push(slide);\n      carousel.visibleSlidesIndexes.push(i);\n      slides.eq(i).addClass(params.slideVisibleClass);\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n  carousel.visibleSlides = $(carousel.visibleSlides);\n}\n","//@ts-nocheck\nexport default function updateProgress(translate) {\n  const carousel = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = carousel.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (carousel && carousel.translate && carousel.translate * multiplier) || 0;\n  }\n  const params = carousel.params;\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\n  let { progress, isBeginning, isEnd } = carousel;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (params.loop) {\n    isBeginning = false;\n    isEnd = false;\n  } else if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - carousel.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Object.assign(carousel, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n\n  if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n    carousel.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    carousel.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    carousel.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    carousel.emit('fromEdge');\n  }\n\n  carousel.emit('progress', progress);\n}\n","//@ts-nocheck\nexport default function updateSlidesClasses() {\n  const carousel = this;\n\n  const { slides, params, $wrapperEl, activeIndex, realIndex } = carousel;\n  const isVirtual = carousel.virtual && params.virtual.enabled;\n\n  slides.removeClass(\n    `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`\n  );\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = carousel.$wrapperEl.find(\n      `.${params.slideClass}[data-carousel-slide-index=\"${activeIndex}\"]`\n    );\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-carousel-slide-index=\"${realIndex}\"]`\n        )\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${params.slideDuplicateClass}[data-carousel-slide-index=\"${realIndex}\"]`\n        )\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide\n    .nextAll(`.${params.slideClass}`)\n    .eq(0)\n    .addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide\n    .prevAll(`.${params.slideClass}`)\n    .eq(0)\n    .addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${\n            params.slideDuplicateClass\n          })[data-carousel-slide-index=\"${nextSlide.attr('data-carousel-slide-index')}\"]`\n        )\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${\n            params.slideDuplicateClass\n          }[data-carousel-slide-index=\"${nextSlide.attr('data-carousel-slide-index')}\"]`\n        )\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}:not(.${\n            params.slideDuplicateClass\n          })[data-carousel-slide-index=\"${prevSlide.attr('data-carousel-slide-index')}\"]`\n        )\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(\n          `.${params.slideClass}.${\n            params.slideDuplicateClass\n          }[data-carousel-slide-index=\"${prevSlide.attr('data-carousel-slide-index')}\"]`\n        )\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n  carousel.emitSlidesClasses();\n}\n","//@ts-nocheck\nexport default function updateActiveIndex(newActiveIndex) {\n  const carousel = this;\n  const translate = carousel.rtlTranslate ? carousel.translate : -carousel.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = carousel;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (\n          translate >= slidesGrid[i] &&\n          translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n        ) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      carousel.snapIndex = snapIndex;\n      carousel.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(\n    carousel.slides.eq(activeIndex).attr('data-carousel-slide-index') || activeIndex,\n    10\n  );\n\n  Object.assign(carousel, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  carousel.emit('activeIndexChange');\n  carousel.emit('snapIndexChange');\n  carousel.emit('realIndexChange');\n\n  if (carousel.initialized || carousel.params.runCallbacksOnInit) {\n    carousel.emit('slideChange');\n  }\n}\n","//@ts-nocheck\nimport $ from '../../shared/dom';\n\nexport default function updateClickedSlide(e) {\n  const carousel = this;\n  const params = carousel.params;\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let i = 0; i < carousel.slides.length; i += 1) {\n      if (carousel.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n\n  if (slide && slideFound) {\n    carousel.clickedSlide = slide;\n    if (carousel.virtual && carousel.params.virtual.enabled) {\n      carousel.clickedIndex = parseInt($(slide).attr('data-carousel-slide-index'), 10);\n    } else {\n      carousel.clickedIndex = slideIndex;\n    }\n  } else {\n    carousel.clickedSlide = undefined;\n    carousel.clickedIndex = undefined;\n    return;\n  }\n  if (\n    params.slideToClickedSlide &&\n    carousel.clickedIndex !== undefined &&\n    carousel.clickedIndex !== carousel.activeIndex\n  ) {\n    carousel.slideToClickedSlide();\n  }\n}\n","//@ts-nocheck\nimport updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n","//@ts-nocheck\nimport { getTranslate } from '../../shared/utils';\n\nexport default function getcarouselTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const carousel = this;\n\n  const { params, rtlTranslate: rtl, translate, $wrapperEl } = carousel;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n","//@ts-nocheck\nexport default function setTranslate(translate, byController) {\n  const carousel = this;\n  const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = carousel;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (carousel.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[carousel.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = carousel.isHorizontal()\n      ? -x\n      : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  carousel.previousTranslate = carousel.translate;\n  carousel.translate = carousel.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - carousel.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    carousel.updateProgress(translate);\n  }\n\n  carousel.emit('setTranslate', carousel.translate, byController);\n}\n","//@ts-nocheck\nexport default function minTranslate() {\n  return -this.snapGrid[0];\n}\n","//@ts-nocheck\nexport default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n","//@ts-nocheck\nimport { animateCSSModeScroll } from '../../shared/utils';\n\nexport default function translateTo(\n  translate = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  translateBounds = true,\n  internal\n) {\n  const carousel = this;\n\n  const { params, wrapperEl } = carousel;\n\n  if (carousel.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = carousel.minTranslate();\n  const maxTranslate = carousel.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  carousel.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = carousel.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!carousel.support.smoothScroll) {\n        animateCSSModeScroll({\n          carousel,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    carousel.setTransition(0);\n    carousel.setTranslate(newTranslate);\n    if (runCallbacks) {\n      carousel.emit('beforeTransitionStart', speed, internal);\n      carousel.emit('transitionEnd');\n    }\n  } else {\n    carousel.setTransition(speed);\n    carousel.setTranslate(newTranslate);\n    if (runCallbacks) {\n      carousel.emit('beforeTransitionStart', speed, internal);\n      carousel.emit('transitionStart');\n    }\n    if (!carousel.animating) {\n      carousel.animating = true;\n      if (!carousel.onTranslateToWrapperTransitionEnd) {\n        carousel.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!carousel || carousel.destroyed) return;\n          if (e.target !== this) return;\n          carousel.$wrapperEl[0].removeEventListener(\n            'transitionend',\n            carousel.onTranslateToWrapperTransitionEnd\n          );\n          carousel.$wrapperEl[0].removeEventListener(\n            'webkitTransitionEnd',\n            carousel.onTranslateToWrapperTransitionEnd\n          );\n          carousel.onTranslateToWrapperTransitionEnd = null;\n          delete carousel.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            carousel.emit('transitionEnd');\n          }\n        };\n      }\n      carousel.$wrapperEl[0].addEventListener(\n        'transitionend',\n        carousel.onTranslateToWrapperTransitionEnd\n      );\n      carousel.$wrapperEl[0].addEventListener(\n        'webkitTransitionEnd',\n        carousel.onTranslateToWrapperTransitionEnd\n      );\n    }\n  }\n\n  return true;\n}\n","//@ts-nocheck\nimport getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n","//@ts-nocheck\nexport default function setTransition(duration, byController) {\n  const carousel = this;\n\n  if (!carousel.params.cssMode) {\n    carousel.$wrapperEl.transition(duration);\n  }\n\n  carousel.emit('setTransition', duration, byController);\n}\n","//@ts-nocheck\nexport default function transitionEmit({ carousel, runCallbacks, direction, step }) {\n  const { activeIndex, previousIndex } = carousel;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  carousel.emit(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      carousel.emit(`slideResetTransition${step}`);\n      return;\n    }\n    carousel.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      carousel.emit(`slideNextTransition${step}`);\n    } else {\n      carousel.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n","//@ts-nocheck\nimport transitionEmit from './transitionEmit';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n  const carousel = this;\n  const { params } = carousel;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    carousel.updateAutoHeight();\n  }\n\n  transitionEmit({ carousel, runCallbacks, direction, step: 'Start' });\n}\n","//@ts-nocheck\nimport transitionEmit from './transitionEmit';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const carousel = this;\n  const { params } = carousel;\n  carousel.animating = false;\n  if (params.cssMode) return;\n  carousel.setTransition(0);\n\n  transitionEmit({ carousel, runCallbacks, direction, step: 'End' });\n}\n","//@ts-nocheck\nimport setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n","//@ts-nocheck\nimport { animateCSSModeScroll } from '../../shared/utils';\n\nexport default function slideTo(\n  index = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal,\n  initial\n) {\n  if (typeof index !== 'number' && typeof index !== 'string') {\n    throw new Error(\n      `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`\n    );\n  }\n\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(\n        `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`\n      );\n    }\n\n    // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n    index = indexAsNumber;\n  }\n\n  const carousel = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = carousel;\n\n  if (\n    (carousel.animating && params.preventInteractionOnTransition) ||\n    (!enabled && !internal && !initial)\n  ) {\n    return false;\n  }\n\n  const skip = Math.min(carousel.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / carousel.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  const translate = -snapGrid[snapIndex];\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (\n          normalizedTranslate >= normalizedGrid &&\n          normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n        ) {\n          slideIndex = i;\n        } else if (\n          normalizedTranslate >= normalizedGrid &&\n          normalizedTranslate < normalizedGridNext\n        ) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (carousel.initialized && slideIndex !== activeIndex) {\n    if (\n      !carousel.allowSlideNext &&\n      translate < carousel.translate &&\n      translate < carousel.minTranslate()\n    ) {\n      return false;\n    }\n    if (\n      !carousel.allowSlidePrev &&\n      translate > carousel.translate &&\n      translate > carousel.maxTranslate()\n    ) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    carousel.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  carousel.updateProgress(translate);\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n  // Update Index\n  if ((rtl && -translate === carousel.translate) || (!rtl && translate === carousel.translate)) {\n    carousel.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      carousel.updateAutoHeight();\n    }\n    carousel.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      carousel.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      carousel.transitionStart(runCallbacks, direction);\n      carousel.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = carousel.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\n      if (isVirtual) {\n        carousel.wrapperEl.style.scrollSnapType = 'none';\n        carousel._immediateVirtual = true;\n      }\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          carousel.wrapperEl.style.scrollSnapType = '';\n          carousel._carouselImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!carousel.support.smoothScroll) {\n        animateCSSModeScroll({ carousel, targetPosition: t, side: isH ? 'left' : 'top' });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n\n  carousel.setTransition(speed);\n  carousel.setTranslate(translate);\n  carousel.updateActiveIndex(slideIndex);\n  carousel.updateSlidesClasses();\n  carousel.emit('beforeTransitionStart', speed, internal);\n  carousel.transitionStart(runCallbacks, direction);\n\n  if (speed === 0) {\n    carousel.transitionEnd(runCallbacks, direction);\n  } else if (!carousel.animating) {\n    carousel.animating = true;\n    if (!carousel.onSlideToWrapperTransitionEnd) {\n      carousel.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!carousel || carousel.destroyed) return;\n        if (e.target !== this) return;\n        carousel.$wrapperEl[0].removeEventListener(\n          'transitionend',\n          carousel.onSlideToWrapperTransitionEnd\n        );\n        carousel.$wrapperEl[0].removeEventListener(\n          'webkitTransitionEnd',\n          carousel.onSlideToWrapperTransitionEnd\n        );\n        carousel.onSlideToWrapperTransitionEnd = null;\n        delete carousel.onSlideToWrapperTransitionEnd;\n        carousel.transitionEnd(runCallbacks, direction);\n      };\n    }\n    carousel.$wrapperEl[0].addEventListener(\n      'transitionend',\n      carousel.onSlideToWrapperTransitionEnd\n    );\n    carousel.$wrapperEl[0].addEventListener(\n      'webkitTransitionEnd',\n      carousel.onSlideToWrapperTransitionEnd\n    );\n  }\n\n  return true;\n}\n","//@ts-nocheck\nexport default function slideToLoop(\n  index = 0,\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal\n) {\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(\n        `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`\n      );\n    }\n\n    // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n    index = indexAsNumber;\n  }\n\n  const carousel = this;\n  let newIndex = index;\n  if (carousel.params.loop) {\n    newIndex += carousel.loopedSlides;\n  }\n\n  return carousel.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","//@ts-nocheck\n/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const carousel = this;\n  const { animating, enabled, params } = carousel;\n  if (!enabled) return carousel;\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(carousel.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = carousel.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    carousel.loopFix();\n    // eslint-disable-next-line\n    carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\n  }\n  if (params.rewind && carousel.isEnd) {\n    return carousel.slideTo(0, speed, runCallbacks, internal);\n  }\n  return carousel.slideTo(carousel.activeIndex + increment, speed, runCallbacks, internal);\n}\n","//@ts-nocheck\n/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const carousel = this;\n  const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = carousel;\n  if (!enabled) return carousel;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    carousel.loopFix();\n    // eslint-disable-next-line\n    carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? carousel.translate : -carousel.translate;\n\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = carousel.activeIndex - 1;\n    if (\n      params.slidesPerView === 'auto' &&\n      params.slidesPerGroup === 1 &&\n      params.slidesPerGroupAuto\n    ) {\n      prevIndex = prevIndex - carousel.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && carousel.isBeginning) {\n    const lastIndex =\n      carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual\n        ? carousel.virtual.slides.length - 1\n        : carousel.slides.length - 1;\n    return carousel.slideTo(lastIndex, speed, runCallbacks, internal);\n  }\n  return carousel.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","//@ts-nocheck\n/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const carousel = this;\n  return carousel.slideTo(carousel.activeIndex, speed, runCallbacks, internal);\n}\n","//@ts-nocheck\n/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n  speed = this.params.speed,\n  runCallbacks = true,\n  internal,\n  threshold = 0.5\n) {\n  const carousel = this;\n  let index = carousel.activeIndex;\n  const skip = Math.min(carousel.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / carousel.params.slidesPerGroup);\n\n  const translate = carousel.rtlTranslate ? carousel.translate : -carousel.translate;\n\n  if (translate >= carousel.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = carousel.snapGrid[snapIndex];\n    const nextSnap = carousel.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += carousel.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = carousel.snapGrid[snapIndex - 1];\n    const currentSnap = carousel.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= carousel.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, carousel.slidesGrid.length - 1);\n\n  return carousel.slideTo(index, speed, runCallbacks, internal);\n}\n","//@ts-nocheck\nimport $ from '../../shared/dom';\nimport { nextTick } from '../../shared/utils';\n\nexport default function slideToClickedSlide() {\n  const carousel = this;\n  const { params, $wrapperEl } = carousel;\n\n  const slidesPerView =\n    params.slidesPerView === 'auto' ? carousel.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = carousel.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (carousel.animating) return;\n    realIndex = parseInt($(carousel.clickedSlide).attr('data-carousel-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        slideToIndex < carousel.loopedSlides - slidesPerView / 2 ||\n        slideToIndex > carousel.slides.length - carousel.loopedSlides + slidesPerView / 2\n      ) {\n        carousel.loopFix();\n        slideToIndex = $wrapperEl\n          .children(\n            `.${params.slideClass}[data-carousel-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`\n          )\n          .eq(0)\n          .index();\n\n        nextTick(() => {\n          carousel.slideTo(slideToIndex);\n        });\n      } else {\n        carousel.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > carousel.slides.length - slidesPerView) {\n      carousel.loopFix();\n      slideToIndex = $wrapperEl\n        .children(\n          `.${params.slideClass}[data-carousel-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`\n        )\n        .eq(0)\n        .index();\n\n      nextTick(() => {\n        carousel.slideTo(slideToIndex);\n      });\n    } else {\n      carousel.slideTo(slideToIndex);\n    }\n  } else {\n    carousel.slideTo(slideToIndex);\n  }\n}\n","//@ts-nocheck\nimport slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n","//@ts-nocheck\nimport { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom';\n\nexport default function loopCreate() {\n  const carousel = this;\n  const document = getDocument();\n  const { params, $wrapperEl } = carousel;\n  // Remove duplicated slides\n  const $selector =\n    $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(\n          `${params.slideClass} ${params.slideBlankClass}`\n        );\n        $selector.append(blankNode);\n      }\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  carousel.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  carousel.loopedSlides += params.loopAdditionalSlides;\n  if (carousel.loopedSlides > slides.length && carousel.params.loopedSlidesLimit) {\n    carousel.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n\n  slides.each((el, index) => {\n    const slide = $(el);\n    slide.attr('data-carousel-slide-index', index);\n  });\n\n  for (let i = 0; i < carousel.loopedSlides; i += 1) {\n    const index = i - Math.floor(i / slides.length) * slides.length;\n    appendSlides.push(slides.eq(index)[0]);\n    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n  }\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n","//@ts-nocheck\nexport default function loopFix() {\n  const carousel = this;\n\n  carousel.emit('beforeLoopFix');\n\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = carousel;\n  let newIndex;\n  carousel.allowSlidePrev = true;\n  carousel.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - carousel.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = carousel.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      carousel.setTranslate((rtl ? -carousel.translate : carousel.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = carousel.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      carousel.setTranslate((rtl ? -carousel.translate : carousel.translate) - diff);\n    }\n  }\n  carousel.allowSlidePrev = allowSlidePrev;\n  carousel.allowSlideNext = allowSlideNext;\n\n  carousel.emit('loopFix');\n}\n","//@ts-nocheck\nexport default function loopDestroy() {\n  const carousel = this;\n  const { $wrapperEl, params, slides } = carousel;\n  $wrapperEl\n    .children(\n      `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`\n    )\n    .remove();\n  slides.removeAttr('data-carousel-slide-index');\n}\n","//@ts-nocheck\nimport loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n","//@ts-nocheck\nexport default function setGrabCursor(moving) {\n  const carousel = this;\n  if (\n    carousel.support.touch ||\n    !carousel.params.simulateTouch ||\n    (carousel.params.watchOverflow && carousel.isLocked) ||\n    carousel.params.cssMode\n  )\n    return;\n  const el = carousel.params.touchEventsTarget === 'container' ? carousel.el : carousel.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","//@ts-nocheck\nexport default function unsetGrabCursor() {\n  const carousel = this;\n  if (\n    carousel.support.touch ||\n    (carousel.params.watchOverflow && carousel.isLocked) ||\n    carousel.params.cssMode\n  ) {\n    return;\n  }\n  carousel[carousel.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor =\n    '';\n}\n","//@ts-nocheck\nimport setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};\n","//@ts-nocheck\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom';\nimport { now } from '../../shared/utils';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const carousel = this;\n  const document = getDocument();\n  const window = getWindow();\n\n  const data = carousel.touchEventsData;\n  const { params, touches, enabled } = carousel;\n  if (!enabled) return;\n\n  if (carousel.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!carousel.animating && params.cssMode && params.loop) {\n    carousel.loopFix();\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(carousel.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    $targetEl = $(eventPath[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector\n    ? params.noSwipingSelector\n    : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (\n    params.noSwiping &&\n    (isTargetShadow\n      ? closestElement(noSwipingSelector, $targetEl[0])\n      : $targetEl.closest(noSwipingSelector)[0])\n  ) {\n    carousel.allowClick = true;\n    return;\n  }\n\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection &&\n    (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n  ) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  carousel.allowClick = true;\n  carousel.updateSize();\n  carousel.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.focusableElements)) {\n      preventDefault = false;\n      if ($targetEl[0].nodeName === 'SELECT') {\n        data.isTouched = false;\n      }\n    }\n    if (\n      document.activeElement &&\n      $(document.activeElement).is(data.focusableElements) &&\n      document.activeElement !== $targetEl[0]\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault =\n      preventDefault && carousel.allowTouchMove && params.touchStartPreventDefault;\n    if (\n      (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n      !$targetEl[0].isContentEditable\n    ) {\n      e.preventDefault();\n    }\n  }\n  if (\n    carousel.params.freeMode &&\n    carousel.params.freeMode.enabled &&\n    carousel.freeMode &&\n    carousel.animating &&\n    !params.cssMode\n  ) {\n    carousel.freeMode.onTouchStart();\n  }\n  carousel.emit('touchStart', e);\n}\n","//@ts-nocheck\nimport { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom';\nimport { now } from '../../shared/utils';\n\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const carousel = this;\n  const data = carousel.touchEventsData;\n  const { params, touches, rtlTranslate: rtl, enabled } = carousel;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      carousel.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch =\n    e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedcarousel) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!carousel.allowTouchMove) {\n    if (!$(e.target).is(data.focusableElements)) {\n      carousel.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (carousel.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && carousel.translate <= carousel.maxTranslate()) ||\n        (pageY > touches.startY && carousel.translate >= carousel.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && carousel.translate <= carousel.maxTranslate()) ||\n      (pageX > touches.startX && carousel.translate >= carousel.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n      data.isMoved = true;\n      carousel.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    carousel.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (carousel.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < carousel.params.threshold)\n    return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (\n      (carousel.isHorizontal() && touches.currentY === touches.startY) ||\n      (carousel.isVertical() && touches.currentX === touches.startX)\n    ) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = carousel.isHorizontal()\n          ? touchAngle > params.touchAngle\n          : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    carousel.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  carousel.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop && !params.cssMode) {\n      carousel.loopFix();\n    }\n    data.startTranslate = carousel.getTranslate();\n    carousel.setTransition(0);\n    if (carousel.animating) {\n      carousel.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (\n      params.grabCursor &&\n      (carousel.allowSlideNext === true || carousel.allowSlidePrev === true)\n    ) {\n      carousel.setGrabCursor(true);\n    }\n    carousel.emit('sliderFirstMove', e);\n  }\n  carousel.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = carousel.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  carousel.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentcarousel = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0 && data.currentTranslate > carousel.minTranslate()) {\n    disableParentcarousel = false;\n    if (params.resistance)\n      data.currentTranslate =\n        carousel.minTranslate() -\n        1 +\n        (-carousel.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < carousel.maxTranslate()) {\n    disableParentcarousel = false;\n    if (params.resistance)\n      data.currentTranslate =\n        carousel.maxTranslate() +\n        1 -\n        (carousel.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentcarousel) {\n    e.preventedByNestedcarousel = true;\n  }\n\n  // Directions locks\n  if (\n    !carousel.allowSlideNext &&\n    carousel.swipeDirection === 'next' &&\n    data.currentTranslate < data.startTranslate\n  ) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (\n    !carousel.allowSlidePrev &&\n    carousel.swipeDirection === 'prev' &&\n    data.currentTranslate > data.startTranslate\n  ) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!carousel.allowSlidePrev && !carousel.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = carousel.isHorizontal()\n          ? touches.currentX - touches.startX\n          : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (\n    (params.freeMode && params.freeMode.enabled && carousel.freeMode) ||\n    params.watchSlidesProgress\n  ) {\n    carousel.updateActiveIndex();\n    carousel.updateSlidesClasses();\n  }\n  if (carousel.params.freeMode && params.freeMode.enabled && carousel.freeMode) {\n    carousel.freeMode.onTouchMove();\n  }\n  // Update progress\n  carousel.updateProgress(data.currentTranslate);\n  // Update translate\n  carousel.setTranslate(data.currentTranslate);\n}\n","//@ts-nocheck\nimport { now, nextTick } from '../../shared/utils';\n\nexport default function onTouchEnd(event) {\n  const carousel = this;\n  const data = carousel.touchEventsData;\n\n  const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = carousel;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    carousel.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      carousel.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (\n    params.grabCursor &&\n    data.isMoved &&\n    data.isTouched &&\n    (carousel.allowSlideNext === true || carousel.allowSlidePrev === true)\n  ) {\n    carousel.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (carousel.allowClick) {\n    const pathTree = e.path || (e.composedPath && e.composedPath());\n    carousel.updateClickedSlide((pathTree && pathTree[0]) || e.target);\n    carousel.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      carousel.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!carousel.destroyed) carousel.allowClick = true;\n  });\n\n  if (\n    !data.isTouched ||\n    !data.isMoved ||\n    !carousel.swipeDirection ||\n    touches.diff === 0 ||\n    data.currentTranslate === data.startTranslate\n  ) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? carousel.translate : -carousel.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (carousel.params.freeMode && params.freeMode.enabled) {\n    carousel.freeMode.onTouchEnd({ currentPos });\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = carousel.slidesSizesGrid[0];\n  for (\n    let i = 0;\n    i < slidesGrid.length;\n    i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n  ) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (carousel.isBeginning) {\n      rewindLastIndex =\n        carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual\n          ? carousel.virtual.slides.length - 1\n          : carousel.slides.length - 1;\n    } else if (carousel.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      carousel.slideTo(carousel.activeIndex);\n      return;\n    }\n    if (carousel.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio)\n        carousel.slideTo(\n          params.rewind && carousel.isEnd ? rewindFirstIndex : stopIndex + increment\n        );\n      else carousel.slideTo(stopIndex);\n    }\n    if (carousel.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        carousel.slideTo(stopIndex + increment);\n      } else if (\n        rewindLastIndex !== null &&\n        ratio < 0 &&\n        Math.abs(ratio) > params.longSwipesRatio\n      ) {\n        carousel.slideTo(rewindLastIndex);\n      } else {\n        carousel.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      carousel.slideTo(carousel.activeIndex);\n      return;\n    }\n    const isNavButtonTarget =\n      carousel.navigation &&\n      (e.target === carousel.navigation.nextEl || e.target === carousel.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (carousel.swipeDirection === 'next') {\n        carousel.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (carousel.swipeDirection === 'prev') {\n        carousel.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === carousel.navigation.nextEl) {\n      carousel.slideTo(stopIndex + increment);\n    } else {\n      carousel.slideTo(stopIndex);\n    }\n  }\n}\n","//@ts-nocheck\nexport default function onResize() {\n  const carousel = this;\n\n  const { params, el } = carousel;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    carousel.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = carousel;\n\n  // Disable locks on resize\n  carousel.allowSlideNext = true;\n  carousel.allowSlidePrev = true;\n\n  carousel.updateSize();\n  carousel.updateSlides();\n\n  carousel.updateSlidesClasses();\n  if (\n    (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n    carousel.isEnd &&\n    !carousel.isBeginning &&\n    !carousel.params.centeredSlides\n  ) {\n    carousel.slideTo(carousel.slides.length - 1, 0, false, true);\n  } else {\n    carousel.slideTo(carousel.activeIndex, 0, false, true);\n  }\n\n  if (carousel.autoplay && carousel.autoplay.running && carousel.autoplay.paused) {\n    carousel.autoplay.run();\n  }\n  // Return locks after resize\n  carousel.allowSlidePrev = allowSlidePrev;\n  carousel.allowSlideNext = allowSlideNext;\n\n  if (carousel.params.watchOverflow && snapGrid !== carousel.snapGrid) {\n    carousel.checkOverflow();\n  }\n}\n","//@ts-nocheck\nexport default function onClick(e) {\n  const carousel = this;\n  if (!carousel.enabled) return;\n  if (!carousel.allowClick) {\n    if (carousel.params.preventClicks) e.preventDefault();\n    if (carousel.params.preventClicksPropagation && carousel.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n","//@ts-nocheck\nexport default function onScroll() {\n  const carousel = this;\n  const { wrapperEl, rtlTranslate, enabled } = carousel;\n  if (!enabled) return;\n  carousel.previousTranslate = carousel.translate;\n  if (carousel.isHorizontal()) {\n    carousel.translate = -wrapperEl.scrollLeft;\n  } else {\n    carousel.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (carousel.translate === 0) carousel.translate = 0;\n\n  carousel.updateActiveIndex();\n  carousel.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (carousel.translate - carousel.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== carousel.progress) {\n    carousel.updateProgress(rtlTranslate ? -carousel.translate : carousel.translate);\n  }\n\n  carousel.emit('setTranslate', carousel.translate, false);\n}\n","//@ts-nocheck\nimport { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (carousel, method) => {\n  const document = getDocument();\n  const { params, touchEvents, el, wrapperEl, device, support } = carousel;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const carouselMethod = method;\n\n  // Touch Events\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, carousel.onTouchStart, false);\n    document[domMethod](touchEvents.move, carousel.onTouchMove, capture);\n    document[domMethod](touchEvents.end, carousel.onTouchEnd, false);\n  } else {\n    const passiveListener =\n      touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    el[domMethod](touchEvents.start, carousel.onTouchStart, passiveListener);\n    el[domMethod](\n      touchEvents.move,\n      carousel.onTouchMove,\n      support.passiveListener ? { passive: false, capture } : capture\n    );\n    el[domMethod](touchEvents.end, carousel.onTouchEnd, passiveListener);\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, carousel.onTouchEnd, passiveListener);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', carousel.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', carousel.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    carousel[carouselMethod](\n      device.ios || device.android\n        ? 'resize orientationchange observerUpdate'\n        : 'resize observerUpdate',\n      onResize,\n      true\n    );\n  } else {\n    carousel[carouselMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const carousel = this;\n  const document = getDocument();\n  const { params, support } = carousel;\n\n  carousel.onTouchStart = onTouchStart.bind(carousel);\n  carousel.onTouchMove = onTouchMove.bind(carousel);\n  carousel.onTouchEnd = onTouchEnd.bind(carousel);\n\n  if (params.cssMode) {\n    carousel.onScroll = onScroll.bind(carousel);\n  }\n\n  carousel.onClick = onClick.bind(carousel);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(carousel, 'on');\n}\n\nfunction detachEvents() {\n  const carousel = this;\n  events(carousel, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};\n","//@ts-nocheck\nimport { extend } from '../../shared/utils';\n\nconst isGridEnabled = (carousel, params) => {\n  return carousel.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const carousel = this;\n  const { activeIndex, initialized, loopedSlides = 0, params, $el } = carousel;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = carousel.getBreakpoint(\n    breakpoints,\n    carousel.params.breakpointsBase,\n    carousel.el\n  );\n\n  if (!breakpoint || carousel.currentBreakpoint === breakpoint) return;\n\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || carousel.originalParams;\n  const wasMultiRow = isGridEnabled(carousel, params);\n  const isMultiRow = isGridEnabled(carousel, breakpointParams);\n\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(\n      `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`\n    );\n    carousel.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n    if (\n      (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n      (!breakpointParams.grid.fill && params.grid.fill === 'column')\n    ) {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n    carousel.emitContainerClasses();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      carousel[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      carousel[prop].enable();\n    }\n  });\n\n  const directionChanged =\n    breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop;\n  // const needsReLoop =\n  //   params.loop &&\n  //   (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    carousel.changeDirection(breakpointParams.direction);\n  }\n  extend(carousel.params, breakpointParams);\n\n  const isEnabled = carousel.params.enabled;\n\n  Object.assign(carousel, {\n    allowTouchMove: carousel.params.allowTouchMove,\n    allowSlideNext: carousel.params.allowSlideNext,\n    allowSlidePrev: carousel.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    carousel.disable();\n  } else if (!wasEnabled && isEnabled) {\n    carousel.enable();\n  }\n\n  carousel.currentBreakpoint = breakpoint;\n\n  carousel.emit('_beforeBreakpoint', breakpointParams);\n\n  if (initialized && needsReLoop) {\n    carousel.loopDestroy();\n    carousel.loopCreate();\n    carousel.updateSlides();\n    carousel.slideTo(activeIndex - loopedSlides + carousel.loopedSlides, 0, false);\n  }\n\n  carousel.emit('breakpoint', breakpointParams);\n}\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n  let breakpoint = false;\n\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n","//@ts-nocheck\nimport setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","//@ts-nocheck\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\n\nexport default function addClasses() {\n  const carousel = this;\n  const { classNames, params, rtl, $el, device, support } = carousel;\n  // prettier-ignore\n  const suffixes = prepareClasses([\n    'initialized',\n    params.direction,\n    { 'pointer-events': !support.touch },\n    { 'free-mode': carousel.params.freeMode && params.freeMode.enabled },\n    { 'autoheight': params.autoHeight },\n    { 'rtl': rtl },\n    { 'grid': params.grid && params.grid.rows > 1 },\n    { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n    { 'android': device.android },\n    { 'ios': device.ios },\n    { 'css-mode': params.cssMode },\n    { 'centered': params.cssMode && params.centeredSlides },\n    { 'watch-progress': params.watchSlidesProgress },\n  ], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  carousel.emitContainerClasses();\n}\n","//@ts-nocheck\nexport default function removeClasses() {\n  const carousel = this;\n  const { $el, classNames } = carousel;\n\n  $el.removeClass(classNames.join(' '));\n  carousel.emitContainerClasses();\n}\n","//@ts-nocheck\nimport addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n","//@ts-nocheck\nexport default function preloadImages() {\n  const carousel = this;\n  carousel.imagesToLoad = carousel.$el.find('img');\n  function onReady() {\n    if (typeof carousel === 'undefined' || carousel === null || !carousel || carousel.destroyed)\n      return;\n    if (carousel.imagesLoaded !== undefined) carousel.imagesLoaded += 1;\n    if (carousel.imagesLoaded === carousel.imagesToLoad.length) {\n      if (carousel.params.updateOnImagesReady) carousel.update();\n      carousel.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < carousel.imagesToLoad.length; i += 1) {\n    const imageEl = carousel.imagesToLoad[i];\n    carousel.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n","//@ts-nocheck\nimport loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n  loadImage,\n  preloadImages\n};\n","//@ts-nocheck\nfunction checkOverflow() {\n  const carousel = this;\n  const { isLocked: wasLocked, params } = carousel;\n  const { slidesOffsetBefore } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = carousel.slides.length - 1;\n    const lastSlideRightEdge =\n      carousel.slidesGrid[lastSlideIndex] +\n      carousel.slidesSizesGrid[lastSlideIndex] +\n      slidesOffsetBefore * 2;\n    carousel.isLocked = carousel.size > lastSlideRightEdge;\n  } else {\n    carousel.isLocked = carousel.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    carousel.allowSlideNext = !carousel.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    carousel.allowSlidePrev = !carousel.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== carousel.isLocked) {\n    carousel.isEnd = false;\n  }\n  if (wasLocked !== carousel.isLocked) {\n    carousel.emit(carousel.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default { checkOverflow };\n","//@ts-nocheck\nexport default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n\n  // Overrides\n  width: null,\n  height: null,\n\n  //\n  preventInteractionOnTransition: false,\n\n  // ssr\n  userAgent: null,\n  url: null,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable carousel and hide navigation when container not overflow\n  watchOverflow: true,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: false,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopedSlidesLimit: true,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n\n  // rewind\n  rewind: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'vts-carousel-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  maxBackfaceHiddenSlides: 10,\n\n  // NS\n  containerModifierClass: 'vts-carousel-', // NEW\n  slideClass: 'vts-carousel-slide',\n  slideBlankClass: 'vts-carousel-slide-invisible-blank',\n  slideActiveClass: 'vts-carousel-slide-active',\n  slideDuplicateActiveClass: 'vts-carousel-slide-duplicate-active',\n  slideVisibleClass: 'vts-carousel-slide-visible',\n  slideDuplicateClass: 'vts-carousel-slide-duplicate',\n  slideNextClass: 'vts-carousel-slide-next',\n  slideDuplicateNextClass: 'vts-carousel-slide-duplicate-next',\n  slidePrevClass: 'vts-carousel-slide-prev',\n  slideDuplicatePrevClass: 'vts-carousel-slide-duplicate-prev',\n  wrapperClass: 'vts-carousel-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n\n  // Internals\n  _emitClasses: false\n};\n","//@ts-nocheck\nimport { extend } from '../shared/utils';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (\n      ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n      params[moduleParamName] === true\n    ) {\n      params[moduleParamName] = { auto: true };\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = { enabled: true };\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n    extend(allModulesParams, obj);\n  };\n}\n","//@ts-nocheck\n/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom';\nimport { extend, now, deleteProps } from '../shared/utils';\nimport { getSupport } from '../shared/get-support';\nimport { getDevice } from '../shared/get-device';\nimport { getBrowser } from '../shared/get-browser';\n\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\nimport Autoplay from './modules/autoplay/autoplay';\nimport Navigation from './modules/navigation/navigation';\nimport Pagination from './modules/pagination/pagination';\n\nimport eventsEmitter from './events-emitter';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\nimport moduleExtendParams from './moduleExtendParams';\n\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\n\nconst extendedDefaults = {};\n\nclass Carousel {\n  isHorizontal() {\n    throw new Error('Method not implemented.');\n  }\n  updateSlides() {\n    throw new Error('Method not implemented.');\n  }\n  updateProgress() {\n    throw new Error('Method not implemented.');\n  }\n  updateSlidesClasses() {\n    throw new Error('Method not implemented.');\n  }\n  setBreakpoint() {\n    throw new Error('Method not implemented.');\n  }\n  getBreakpoint(breakpoints) {\n    throw new Error('Method not implemented.');\n  }\n  constructor(...args) {\n    let el;\n    let params;\n    if (\n      args.length === 1 &&\n      args[0].constructor &&\n      Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n    ) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    if (params.el && $(params.el).length > 1) {\n      const carousels = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, { el: containerEl });\n        carousels.push(new carousel(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return carousels;\n    }\n\n    // carousel Instance\n    const carousel = this;\n    carousel.__carousel__ = true;\n    carousel.support = getSupport();\n    carousel.device = getDevice({ userAgent: params.userAgent });\n    carousel.browser = getBrowser();\n\n    carousel.eventsListeners = {};\n    carousel.eventsAnyListeners = [];\n    carousel.modules = [...carousel.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      carousel.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n\n    carousel.modules.forEach(mod => {\n      mod({\n        carousel,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: carousel.on.bind(carousel),\n        once: carousel.once.bind(carousel),\n        off: carousel.off.bind(carousel),\n        emit: carousel.emit.bind(carousel)\n      });\n    });\n\n    // Extend defaults with modules params\n    const carouselParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    carousel.params = extend({}, carouselParams, extendedDefaults, params);\n    carousel.originalParams = extend({}, carousel.params);\n    carousel.passedParams = extend({}, params);\n\n    // add event listeners\n    if (carousel.params && carousel.params.on) {\n      Object.keys(carousel.params.on).forEach(eventName => {\n        carousel.on(eventName, carousel.params.on[eventName]);\n      });\n    }\n    if (carousel.params && carousel.params.onAny) {\n      carousel.onAny(carousel.params.onAny);\n    }\n\n    // Save Dom lib\n    carousel.$ = $;\n\n    // Extend carousel\n    Object.assign(carousel, {\n      enabled: carousel.params.enabled,\n      el,\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return carousel.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return carousel.params.direction === 'vertical';\n      },\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: carousel.params.allowSlideNext,\n      allowSlidePrev: carousel.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n        carousel.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3]\n        };\n        carousel.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2]\n        };\n        return carousel.support.touch || !carousel.params.simulateTouch\n          ? carousel.touchEventsTouch\n          : carousel.touchEventsDesktop;\n      })(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: carousel.params.focusableElements,\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: carousel.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n\n    carousel.emit('_carousel');\n\n    // Init\n    if (carousel.params.init) {\n      carousel.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return carousel;\n    this.virtual = undefined;\n    this.loopCreate = undefined;\n    this.loopDestroy = undefined;\n    this.loopedSlides = undefined;\n    this.lazy = undefined;\n    this.controller = undefined;\n    this.allowSlideNext = undefined;\n    this.allowSlidePrev = undefined;\n    this.currentBreakpoint = undefined;\n  }\n\n  enable() {\n    const carousel = this;\n    if (carousel.enabled) return;\n    carousel.enabled = true;\n    if (carousel.params.grabCursor) {\n      carousel.setGrabCursor();\n    }\n    carousel.emit('enable');\n  }\n\n  disable() {\n    const carousel = this;\n    if (!carousel.enabled) return;\n    carousel.enabled = false;\n    if (carousel.params.grabCursor) {\n      carousel.unsetGrabCursor();\n    }\n    carousel.emit('disable');\n  }\n\n  setProgress(progress, speed) {\n    const carousel = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = carousel.minTranslate();\n    const max = carousel.maxTranslate();\n    const current = (max - min) * progress + min;\n    carousel.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    carousel.updateActiveIndex();\n    carousel.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const carousel = this;\n    if (!carousel.params._emitClasses || !carousel.el) return;\n    const cls = carousel.el.className.split(' ').filter(className => {\n      return (\n        className.indexOf('vts-carousel') === 0 ||\n        className.indexOf(carousel.params.containerModifierClass) === 0\n      );\n    });\n    carousel.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const carousel = this;\n    if (carousel.destroyed) return '';\n\n    return slideEl.className\n      .split(' ')\n      .filter(className => {\n        return (\n          className.indexOf('vts-carousel-slide') === 0 ||\n          className.indexOf(carousel.params.slideClass) === 0\n        );\n      })\n      .join(' ');\n  }\n\n  emitSlidesClasses() {\n    const carousel = this;\n    if (!carousel.params._emitClasses || !carousel.el) return;\n    const updates = [];\n    carousel.slides.each(slideEl => {\n      const classNames = carousel.getSlideClasses(slideEl);\n      updates.push({ slideEl, classNames });\n      carousel.emit('_slideClass', slideEl, classNames);\n    });\n    carousel.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const carousel = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: carouselSize,\n      activeIndex\n    } = carousel;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].carouselSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].carouselSlideSize;\n          spv += 1;\n          if (slideSize > carouselSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].carouselSlideSize;\n          spv += 1;\n          if (slideSize > carouselSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact\n            ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < carouselSize\n            : slidesGrid[i] - slidesGrid[activeIndex] < carouselSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < carouselSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const carousel = this;\n    if (!carousel || carousel.destroyed) return;\n    const { snapGrid, params } = carousel;\n\n    // Loop recreation\n    if (params.loop) {\n      carousel.loopDestroy();\n      carousel.loopCreate();\n    }\n    // Breakpoints\n    if (params.breakpoints) {\n      carousel.setBreakpoint();\n    }\n    carousel.updateSize();\n    carousel.updateSlides();\n    carousel.updateProgress();\n    carousel.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = carousel.rtlTranslate ? carousel.translate * -1 : carousel.translate;\n      const newTranslate = Math.min(\n        Math.max(translateValue, carousel.maxTranslate()),\n        carousel.minTranslate()\n      );\n      carousel.setTranslate(newTranslate);\n      carousel.updateActiveIndex();\n      carousel.updateSlidesClasses();\n    }\n    let translated;\n    if (carousel.params.freeMode && carousel.params.freeMode.enabled) {\n      setTranslate();\n      if (carousel.params.autoHeight) {\n        carousel.updateAutoHeight();\n      }\n    } else {\n      if (params.loop) {\n        translated = carousel.slideTo(carousel.realIndex + carousel.loopedSlides, 0, false, true);\n      } else if (\n        (carousel.params.slidesPerView === 'auto' || carousel.params.slidesPerView > 1) &&\n        carousel.isEnd &&\n        !carousel.params.centeredSlides\n      ) {\n        translated = carousel.slideTo(carousel.slides.length - 1, 0, false, true);\n      } else {\n        translated = carousel.slideTo(carousel.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== carousel.snapGrid) {\n      carousel.checkOverflow();\n    }\n\n    carousel.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const carousel = this;\n    const currentDirection = carousel.params.direction;\n\n    carousel.$el\n      .removeClass(`${carousel.params.containerModifierClass}horizontal`)\n      .removeClass(`${carousel.params.containerModifierClass}vertical`)\n      .addClass(`${carousel.params.containerModifierClass}${newDirection}`);\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (\n      newDirection === currentDirection ||\n      (newDirection !== 'horizontal' && newDirection !== 'vertical')\n    ) {\n      return carousel;\n    }\n\n    carousel.emitContainerClasses();\n\n    carousel.params.direction = newDirection;\n\n    carousel.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    carousel.emit('changeDirection');\n    if (needUpdate) carousel.update();\n\n    return carousel;\n  }\n\n  changeLanguageDirection(direction) {\n    const carousel = this;\n    if ((carousel.rtl && direction === 'rtl') || (!carousel.rtl && direction === 'ltr')) return;\n    carousel.rtl = direction === 'rtl';\n    carousel.rtlTranslate = carousel.params.direction === 'horizontal' && carousel.rtl;\n    if (carousel.rtl) {\n      carousel.$el.addClass(`${carousel.params.containerModifierClass}rtl`);\n      carousel.el.dir = 'rtl';\n    } else {\n      carousel.$el.removeClass(`${carousel.params.containerModifierClass}rtl`);\n      carousel.el.dir = 'ltr';\n    }\n    carousel.update();\n  }\n\n  mount(el) {\n    const carousel = this;\n    if (carousel.mounted) return true;\n\n    // Find el\n    const $el = $(el || carousel.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.carousel = carousel;\n\n    const getWrapperSelector = () => {\n      return `.${(carousel.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n        // Children needs to return slot items\n        res.children = options => $el.children(options);\n        return res;\n      }\n      if (!$el.children) {\n        return $($el).children(getWrapperSelector());\n      }\n      return $el.children(getWrapperSelector());\n    };\n    // Find Wrapper\n    let $wrapperEl = getWrapper();\n    if ($wrapperEl.length === 0 && carousel.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = carousel.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${carousel.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(carousel, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n      mounted: true,\n\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate:\n        carousel.params.direction === 'horizontal' &&\n        (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n    });\n\n    return true;\n  }\n\n  init(el) {\n    const carousel = this;\n    if (carousel.initialized) return carousel;\n\n    const mounted = carousel.mount(el);\n    if (mounted === false) return carousel;\n\n    carousel.emit('beforeInit');\n\n    // Set breakpoint\n    if (carousel.params.breakpoints) {\n      carousel.setBreakpoint();\n    }\n\n    // Add Classes\n    carousel.addClasses();\n\n    // Create loop\n    if (carousel.params.loop) {\n      carousel.loopCreate();\n    }\n\n    // Update size\n    carousel.updateSize();\n\n    // Update slides\n    carousel.updateSlides();\n\n    if (carousel.params.watchOverflow) {\n      carousel.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (carousel.params.grabCursor && carousel.enabled) {\n      carousel.setGrabCursor();\n    }\n\n    if (carousel.params.preloadImages) {\n      carousel.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (carousel.params.loop) {\n      carousel.slideTo(\n        carousel.params.initialSlide + carousel.loopedSlides,\n        0,\n        carousel.params.runCallbacksOnInit,\n        false,\n        true\n      );\n    } else {\n      carousel.slideTo(\n        carousel.params.initialSlide,\n        0,\n        carousel.params.runCallbacksOnInit,\n        false,\n        true\n      );\n    }\n\n    // Attach events\n    carousel.attachEvents();\n\n    // Init Flag\n    carousel.initialized = true;\n\n    // Emit\n    carousel.emit('init');\n    carousel.emit('afterInit');\n\n    return carousel;\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const carousel = this;\n    const { params, $el, $wrapperEl, slides } = carousel;\n\n    if (typeof carousel.params === 'undefined' || carousel.destroyed) {\n      return null;\n    }\n\n    carousel.emit('beforeDestroy');\n\n    // Init Flag\n    carousel.initialized = false;\n\n    // Detach events\n    carousel.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      carousel.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      carousel.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass(\n            [\n              params.slideVisibleClass,\n              params.slideActiveClass,\n              params.slideNextClass,\n              params.slidePrevClass\n            ].join(' ')\n          )\n          .removeAttr('style')\n          .removeAttr('data-carousel-slide-index');\n      }\n    }\n\n    carousel.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(carousel.eventsListeners).forEach(eventName => {\n      carousel.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      carousel.$el[0].carousel = null;\n      deleteProps(carousel);\n    }\n    carousel.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Carousel.prototype.__modules__) Carousel.prototype.__modules__ = [];\n    const modules = Carousel.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Carousel.installModule(m));\n      return Carousel;\n    }\n    Carousel.installModule(module);\n    return Carousel;\n  }\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Carousel.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\n\nCarousel.use([Resize, Observer, Autoplay, Navigation, Pagination]);\n\nexport default Carousel;\n","//@ts-nocheck\nimport $ from '../../../shared/dom';\nimport { setCSSProperty } from '../../../shared/utils';\n\nexport default function Virtual({ carousel, extendParams, on, emit }) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n\n  let cssModeTimeout;\n\n  carousel.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = carousel.params.virtual;\n    if (params.cache && carousel.virtual.cache[index]) {\n      return carousel.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(carousel, slide, index))\n      : $(\n          `<div class=\"${carousel.params.slideClass}\" data-carousel-slide-index=\"${index}\">${slide}</div>`\n        );\n    if (!$slideEl.attr('data-carousel-slide-index'))\n      $slideEl.attr('data-carousel-slide-index', index);\n    if (params.cache) carousel.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const { slidesPerView, slidesPerGroup, centeredSlides } = carousel.params;\n    const { addSlidesBefore, addSlidesAfter } = carousel.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = carousel.virtual;\n    if (!carousel.params.cssMode) {\n      carousel.updateActiveIndex();\n    }\n\n    const activeIndex = carousel.activeIndex || 0;\n\n    let offsetProp;\n    if (carousel.rtlTranslate) offsetProp = 'right';\n    else offsetProp = carousel.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (carousel.slidesGrid[from] || 0) - (carousel.slidesGrid[0] || 0);\n\n    Object.assign(carousel.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: carousel.slidesGrid\n    });\n\n    function onRendered() {\n      carousel.updateSlides();\n      carousel.updateProgress();\n      carousel.updateSlidesClasses();\n      if (carousel.lazy && carousel.params.lazy.enabled) {\n        carousel.lazy.load();\n      }\n      emit('virtualUpdate');\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (carousel.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        carousel.slides.css(offsetProp, `${offset}px`);\n      }\n      carousel.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (carousel.params.virtual.renderExternal) {\n      carousel.params.virtual.renderExternal.call(carousel, {\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 (carousel.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      carousel.$wrapperEl.find(`.${carousel.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          carousel.$wrapperEl\n            .find(`.${carousel.params.slideClass}[data-carousel-slide-index=\"${i}\"]`)\n            .remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      carousel.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes\n      .sort((a, b) => b - a)\n      .forEach(index => {\n        carousel.$wrapperEl.prepend(renderSlide(slides[index], index));\n      });\n    carousel.$wrapperEl.children('.vts-carousel-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\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]) carousel.virtual.slides.push(slides[i]);\n      }\n    } else {\n      carousel.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = carousel.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) carousel.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      carousel.virtual.slides.unshift(slides);\n    }\n    if (carousel.params.virtual.cache) {\n      const cache = carousel.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-carousel-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr(\n            'data-carousel-slide-index',\n            parseInt(cachedElIndex, 10) + numberOfNewSlides\n          );\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      carousel.virtual.cache = newCache;\n    }\n    update(true);\n    carousel.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = carousel.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        carousel.virtual.slides.splice(slidesIndexes[i], 1);\n        if (carousel.params.virtual.cache) {\n          delete carousel.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      carousel.virtual.slides.splice(slidesIndexes, 1);\n      if (carousel.params.virtual.cache) {\n        delete carousel.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    carousel.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    carousel.virtual.slides = [];\n    if (carousel.params.virtual.cache) {\n      carousel.virtual.cache = {};\n    }\n    update(true);\n    carousel.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!carousel.params.virtual.enabled) return;\n    carousel.virtual.slides = carousel.params.virtual.slides;\n    carousel.classNames.push(`${carousel.params.containerModifierClass}virtual`);\n\n    carousel.params.watchSlidesProgress = true;\n    carousel.originalParams.watchSlidesProgress = true;\n\n    if (!carousel.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!carousel.params.virtual.enabled) return;\n    if (carousel.params.cssMode && !carousel._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!carousel.params.virtual.enabled) return;\n    if (carousel.params.cssMode) {\n      setCSSProperty(carousel.wrapperEl, '--carousel-virtual-size', `${carousel.virtualSize}px`);\n    }\n  });\n\n  Object.assign(carousel.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n","//@ts-nocheck\n/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../shared/dom';\n\nexport default function Keyboard({ carousel, extendParams, on, emit }) {\n  const document = getDocument();\n  const window = getWindow();\n  carousel.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!carousel.enabled) return;\n\n    const { rtlTranslate: rtl } = carousel;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = carousel.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 (\n      !carousel.allowSlideNext &&\n      ((carousel.isHorizontal() && isArrowRight) ||\n        (carousel.isVertical() && isArrowDown) ||\n        isPageDown)\n    ) {\n      return false;\n    }\n    if (\n      !carousel.allowSlidePrev &&\n      ((carousel.isHorizontal() && isArrowLeft) || (carousel.isVertical() && isArrowUp) || isPageUp)\n    ) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (\n      document.activeElement &&\n      document.activeElement.nodeName &&\n      (document.activeElement.nodeName.toLowerCase() === 'input' ||\n        document.activeElement.nodeName.toLowerCase() === 'textarea')\n    ) {\n      return undefined;\n    }\n    if (\n      carousel.params.keyboard.onlyInViewport &&\n      (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n    ) {\n      let inView = false;\n      // Check that carousel should be inside of visible area of window\n      if (\n        carousel.$el.parents(`.${carousel.params.slideClass}`).length > 0 &&\n        carousel.$el.parents(`.${carousel.params.slideActiveClass}`).length === 0\n      ) {\n        return undefined;\n      }\n\n      const $el = carousel.$el;\n      const carouselWidth = $el[0].clientWidth;\n      const carouselHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const carouselOffset = carousel.$el.offset();\n      if (rtl) carouselOffset.left -= carousel.$el[0].scrollLeft;\n      const carouselCoord = [\n        [carouselOffset.left, carouselOffset.top],\n        [carouselOffset.left + carouselWidth, carouselOffset.top],\n        [carouselOffset.left, carouselOffset.top + carouselHeight],\n        [carouselOffset.left + carouselWidth, carouselOffset.top + carouselHeight]\n      ];\n      for (let i = 0; i < carouselCoord.length; i += 1) {\n        const point = carouselCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (carousel.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n        carousel.slideNext();\n      if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n        carousel.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) carousel.slideNext();\n      if (isPageUp || isArrowUp) carousel.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (carousel.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    carousel.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!carousel.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    carousel.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (carousel.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (carousel.keyboard.enabled) {\n      disable();\n    }\n  });\n\n  Object.assign(carousel.keyboard, {\n    enable,\n    disable\n  });\n}\n","//@ts-nocheck\n/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../../shared/dom';\nimport { now, nextTick } from '../../../shared/utils';\n\nexport default function Mousewheel({ carousel, extendParams, on, emit }) {\n  const window = getWindow();\n\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    }\n  });\n\n  carousel.mousewheel = {\n    enabled: false\n  };\n\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\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\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\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\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!carousel.enabled) return;\n    carousel.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!carousel.enabled) return;\n    carousel.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (\n      carousel.params.mousewheel.thresholdDelta &&\n      newEvent.delta < carousel.params.mousewheel.thresholdDelta\n    ) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (\n      carousel.params.mousewheel.thresholdTime &&\n      now() - lastScrollTime < carousel.params.mousewheel.thresholdTime\n    ) {\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 ((!carousel.isEnd || carousel.params.loop) && !carousel.animating) {\n        carousel.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!carousel.isBeginning || carousel.params.loop) && !carousel.animating) {\n      carousel.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 = carousel.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (carousel.isEnd && !carousel.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (carousel.isBeginning && !carousel.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 disableParentcarousel = true;\n    if (!carousel.enabled) return;\n    const params = carousel.params.mousewheel;\n\n    if (carousel.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = carousel.$el;\n    if (carousel.params.mousewheel.eventsTarget !== 'container') {\n      target = $(carousel.params.mousewheel.eventsTarget);\n    }\n    if (!carousel.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n      return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = carousel.rtlTranslate ? -1 : 1;\n\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (carousel.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n      else return true;\n    } else {\n      delta =\n        Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = carousel.getTranslate() + delta * params.sensitivity;\n\n    if (positions >= carousel.minTranslate()) positions = carousel.minTranslate();\n    if (positions <= carousel.maxTranslate()) positions = carousel.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentcarousel will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentcarousel will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentcarousel will be false.\n    disableParentcarousel = carousel.params.loop\n      ? true\n      : !(positions === carousel.minTranslate() || positions === carousel.maxTranslate());\n\n    if (disableParentcarousel && carousel.params.nested) e.stopPropagation();\n\n    if (!carousel.params.freeMode || !carousel.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      const prevEvent = recentWheelEvents.length\n        ? recentWheelEvents[recentWheelEvents.length - 1]\n        : 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 (\n          newEvent.direction !== prevEvent.direction ||\n          newEvent.delta > prevEvent.delta ||\n          newEvent.time > prevEvent.time + 150\n        ) {\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 =\n        lastEventBeforeSnap &&\n        newEvent.time < lastEventBeforeSnap.time + 500 &&\n        newEvent.delta <= lastEventBeforeSnap.delta &&\n        newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (carousel.params.loop) {\n          carousel.loopFix();\n        }\n        let position = carousel.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = carousel.isBeginning;\n        const wasEnd = carousel.isEnd;\n\n        if (position >= carousel.minTranslate()) position = carousel.minTranslate();\n        if (position <= carousel.maxTranslate()) position = carousel.maxTranslate();\n\n        carousel.setTransition(0);\n        carousel.setTranslate(position);\n        carousel.updateProgress();\n        carousel.updateActiveIndex();\n        carousel.updateSlidesClasses();\n\n        if ((!wasBeginning && carousel.isBeginning) || (!wasEnd && carousel.isEnd)) {\n          carousel.updateSlidesClasses();\n        }\n\n        if (carousel.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          const prevEvent = recentWheelEvents.length\n            ? recentWheelEvents[recentWheelEvents.length - 1]\n            : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (\n            prevEvent &&\n            (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n          ) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (\n            recentWheelEvents.length >= 15 &&\n            newEvent.time - firstEvent.time < 500 &&\n            firstEvent.delta - newEvent.delta >= 1 &&\n            newEvent.delta <= 6\n          ) {\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              carousel.slideToClosest(carousel.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              carousel.slideToClosest(carousel.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 (carousel.params.autoplay && carousel.params.autoplayDisableOnInteraction)\n          carousel.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === carousel.minTranslate() || position === carousel.maxTranslate())\n          return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = carousel.$el;\n    if (carousel.params.mousewheel.eventsTarget !== 'container') {\n      target = $(carousel.params.mousewheel.eventsTarget);\n    }\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (carousel.params.cssMode) {\n      carousel.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (carousel.mousewheel.enabled) return false;\n    events('on');\n    carousel.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (carousel.params.cssMode) {\n      carousel.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!carousel.mousewheel.enabled) return false;\n    events('off');\n    carousel.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!carousel.params.mousewheel.enabled && carousel.params.cssMode) {\n      disable();\n    }\n    if (carousel.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (carousel.params.cssMode) {\n      enable();\n    }\n    if (carousel.mousewheel.enabled) disable();\n  });\n\n  Object.assign(carousel.mousewheel, {\n    enable,\n    disable\n  });\n}\n","//@ts-nocheck\nimport { getDocument } from 'ssr-window';\nimport $ from '../../../shared/dom';\nimport { nextTick } from '../../../shared/utils';\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\n\nexport default function Scrollbar({ carousel, extendParams, on, emit }) {\n  const document = getDocument();\n\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\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'vts-carousel-scrollbar-lock',\n      dragClass: 'vts-carousel-scrollbar-drag',\n      scrollbarDisabledClass: 'vts-carousel-scrollbar-disabled',\n      horizontalClass: `carousel-scrollbar-horizontal`,\n      verticalClass: `carousel-scrollbar-vertical`\n    }\n  });\n\n  carousel.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = carousel;\n    const { $dragEl, $el } = scrollbar;\n    const params = carousel.params.scrollbar;\n\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 (carousel.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\n    carousel.scrollbar.$dragEl.transition(duration);\n  }\n  function updateSize() {\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\n\n    const { scrollbar } = carousel;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = carousel.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    divider =\n      carousel.size /\n      (carousel.virtualSize +\n        carousel.params.slidesOffsetBefore -\n        (carousel.params.centeredSlides ? carousel.snapGrid[0] : 0));\n    if (carousel.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(carousel.params.scrollbar.dragSize, 10);\n    }\n\n    if (carousel.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (carousel.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (carousel.params.watchOverflow && carousel.enabled) {\n      scrollbar.$el[carousel.isLocked ? 'addClass' : 'removeClass'](\n        carousel.params.scrollbar.lockClass\n      );\n    }\n  }\n  function getPointerPosition(e) {\n    if (carousel.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove'\n        ? e.targetTouches[0].clientX\n        : e.clientX;\n    }\n    return e.type === 'touchstart' || e.type === 'touchmove'\n      ? e.targetTouches[0].clientY\n      : e.clientY;\n  }\n  function setDragPosition(e) {\n    const { scrollbar, rtlTranslate: rtl } = carousel;\n    const { $el } = scrollbar;\n\n    let positionRatio;\n    positionRatio =\n      (getPointerPosition(e) -\n        $el.offset()[carousel.isHorizontal() ? 'left' : 'top'] -\n        (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n      (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position =\n      carousel.minTranslate() + (carousel.maxTranslate() - carousel.minTranslate()) * positionRatio;\n\n    carousel.updateProgress(position);\n    carousel.setTranslate(position);\n    carousel.updateActiveIndex();\n    carousel.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = carousel.params.scrollbar;\n    const { scrollbar, $wrapperEl } = carousel;\n    const { $el, $dragEl } = scrollbar;\n    isTouched = true;\n    dragStartPos =\n      e.target === $dragEl[0] || e.target === $dragEl\n        ? getPointerPosition(e) -\n          e.target.getBoundingClientRect()[carousel.isHorizontal() ? 'left' : 'top']\n        : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n\n    clearTimeout(dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (carousel.params.cssMode) {\n      carousel.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const { scrollbar, $wrapperEl } = carousel;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = carousel.params.scrollbar;\n    const { scrollbar, $wrapperEl } = carousel;\n    const { $el } = scrollbar;\n\n    if (!isTouched) return;\n    isTouched = false;\n    if (carousel.params.cssMode) {\n      carousel.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      carousel.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = carousel;\n    const $el = scrollbar.$el;\n    if (!$el) return;\n    const target = $el[0];\n    const activeListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: false, capture: false }\n        : false;\n    const passiveListener =\n      support.passiveListener && params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const { scrollbar, $el: $carouselEl } = carousel;\n    carousel.params.scrollbar = createElementIfNotDefined(\n      carousel,\n      carousel.originalParams.scrollbar,\n      carousel.params.scrollbar,\n      { el: 'vts-carousel-scrollbar' }\n    );\n    const params = carousel.params.scrollbar;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if (\n      carousel.params.uniqueNavElements &&\n      typeof params.el === 'string' &&\n      $el.length > 1 &&\n      $carouselEl.find(params.el).length === 1\n    ) {\n      $el = $carouselEl.find(params.el);\n    }\n\n    $el.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n    let $dragEl = $el.find(`.${carousel.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${carousel.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.scrollbar.lockClass);\n    }\n  }\n  function destroy() {\n    const params = carousel.params.scrollbar;\n    const $el = carousel.scrollbar.$el;\n    if ($el) {\n      $el.removeClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n\n    disableDraggable();\n  }\n\n  on('init', () => {\n    if (carousel.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const { $el } = carousel.scrollbar;\n    if ($el) {\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n\n  const enable = () => {\n    carousel.$el.removeClass(carousel.params.scrollbar.scrollbarDisabledClass);\n    if (carousel.scrollbar.$el) {\n      carousel.scrollbar.$el.removeClass(carousel.params.scrollbar.scrollbarDisabledClass);\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n\n  const disable = () => {\n    carousel.$el.addClass(carousel.params.scrollbar.scrollbarDisabledClass);\n    if (carousel.scrollbar.$el) {\n      carousel.scrollbar.$el.addClass(carousel.params.scrollbar.scrollbarDisabledClass);\n    }\n    destroy();\n  };\n\n  Object.assign(carousel.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n","//@ts-nocheck\nimport $ from '../../../shared/dom';\n\nexport default function Parallax({ carousel, extendParams, on }) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const { rtl } = carousel;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-carousel-parallax') || '0';\n    let x = $el.attr('data-carousel-parallax-x');\n    let y = $el.attr('data-carousel-parallax-y');\n    const scale = $el.attr('data-carousel-parallax-scale');\n    const opacity = $el.attr('data-carousel-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (carousel.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\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\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const { $el, slides, progress, snapGrid } = carousel;\n    $el\n      .children(\n        '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\n      )\n      .each(el => {\n        setTransform(el, progress);\n      });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (carousel.params.slidesPerGroup > 1 && carousel.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)\n        .find(\n          '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\n        )\n        .each(el => {\n          setTransform(el, slideProgress);\n        });\n    });\n  };\n\n  const setTransition = (duration = carousel.params.speed) => {\n    const { $el } = carousel;\n    $el\n      .find(\n        '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\n      )\n      .each(parallaxEl => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration =\n          parseInt($parallaxEl.attr('data-carousel-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  };\n\n  on('beforeInit', () => {\n    if (!carousel.params.parallax.enabled) return;\n    carousel.params.watchSlidesProgress = true;\n    carousel.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!carousel.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!carousel.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_carousel, duration) => {\n    if (!carousel.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\nimport $ from '../../../shared/dom';\nimport { getTranslate } from '../../../shared/utils';\n\nexport default function Zoom({ carousel, extendParams, on, emit }) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'vts-carousel-zoom-container',\n      zoomedSlideClass: 'vts-carousel-slide-zoomed'\n    }\n  });\n\n  carousel.zoom = {\n    enabled: false\n  };\n\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\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\n  let scale = 1;\n  Object.defineProperty(carousel.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    const support = carousel.support;\n    const params = carousel.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${carousel.params.slideClass}`);\n      if (gesture.$slideEl.length === 0)\n        gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\n      gesture.$imageEl = gesture.$slideEl\n        .find(`.${params.containerClass}`)\n        .eq(0)\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\n        .eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    const support = carousel.support;\n    const params = carousel.params.zoom;\n    const zoom = carousel.zoom;\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n    }\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.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n  function onGestureEnd(e) {\n    const device = carousel.device;\n    const support = carousel.support;\n    const params = carousel.params.zoom;\n    const zoom = carousel.zoom;\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n      if (\n        e.type !== 'touchend' ||\n        (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n      ) {\n        return;\n      }\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl\n      .transition(carousel.params.speed)\n      .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n  function onTouchStart(e) {\n    const device = carousel.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n  function onTouchMove(e) {\n    const zoom = carousel.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    carousel.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\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\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (\n        carousel.isHorizontal() &&\n        ((Math.floor(image.minX) === Math.floor(image.startX) &&\n          image.touchesCurrent.x < image.touchesStart.x) ||\n          (Math.floor(image.maxX) === Math.floor(image.startX) &&\n            image.touchesCurrent.x > image.touchesStart.x))\n      ) {\n        image.isTouched = false;\n        return;\n      }\n      if (\n        !carousel.isHorizontal() &&\n        ((Math.floor(image.minY) === Math.floor(image.startY) &&\n          image.touchesCurrent.y < image.touchesStart.y) ||\n          (Math.floor(image.maxY) === Math.floor(image.startY) &&\n            image.touchesCurrent.y > image.touchesStart.y))\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\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\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 =\n      (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y =\n      (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\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n  function onTouchEnd() {\n    const zoom = carousel.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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)\n      momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0)\n      momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\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.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\n    gesture.$imageWrapEl\n      .transition(momentumDuration)\n      .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n  function onTransitionEnd() {\n    const zoom = carousel.zoom;\n    if (gesture.$slideEl && carousel.previousIndex !== carousel.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = carousel.zoom;\n    const params = carousel.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${carousel.params.slideClass}`);\n      }\n      if (!gesture.$slideEl) {\n        if (carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual) {\n          gesture.$slideEl = carousel.$wrapperEl.children(`.${carousel.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl\n        .find(`.${params.containerClass}`)\n        .eq(0)\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\n        .eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (\n      !gesture.$imageEl ||\n      gesture.$imageEl.length === 0 ||\n      !gesture.$imageWrapEl ||\n      gesture.$imageWrapEl.length === 0\n    )\n      return;\n    if (carousel.params.cssMode) {\n      carousel.wrapperEl.style.overflow = 'hidden';\n      carousel.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\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\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\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\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\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    gesture.$imageWrapEl\n      .transition(300)\n      .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n  function zoomOut() {\n    const zoom = carousel.zoom;\n    const params = carousel.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual) {\n        gesture.$slideEl = carousel.$wrapperEl.children(`.${carousel.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl\n        .find(`.${params.containerClass}`)\n        .eq(0)\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\n        .eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (\n      !gesture.$imageEl ||\n      gesture.$imageEl.length === 0 ||\n      !gesture.$imageWrapEl ||\n      gesture.$imageWrapEl.length === 0\n    )\n      return;\n    if (carousel.params.cssMode) {\n      carousel.wrapperEl.style.overflow = '';\n      carousel.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = carousel.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = carousel.support;\n    const passiveListener =\n      carousel.touchEvents.start === 'touchstart' &&\n      support.passiveListener &&\n      carousel.params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n    const activeListenerWithCapture = support.passiveListener\n      ? { passive: false, capture: true }\n      : true;\n    return { passiveListener, activeListenerWithCapture };\n  }\n\n  function getSlideSelector() {\n    return `.${carousel.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const { passiveListener } = getListeners();\n    const slideSelector = getSlideSelector();\n    carousel.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    carousel.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    carousel.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = carousel.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = carousel.support;\n    const { passiveListener, activeListenerWithCapture } = getListeners();\n    const slideSelector = getSlideSelector();\n\n    // Scale image\n    if (support.gestures) {\n      carousel.$wrapperEl.on(carousel.touchEvents.start, enableGestures, passiveListener);\n      carousel.$wrapperEl.on(carousel.touchEvents.end, disableGestures, passiveListener);\n    } else if (carousel.touchEvents.start === 'touchstart') {\n      carousel.$wrapperEl.on(\n        carousel.touchEvents.start,\n        slideSelector,\n        onGestureStart,\n        passiveListener\n      );\n      carousel.$wrapperEl.on(\n        carousel.touchEvents.move,\n        slideSelector,\n        onGestureChange,\n        activeListenerWithCapture\n      );\n      carousel.$wrapperEl.on(\n        carousel.touchEvents.end,\n        slideSelector,\n        onGestureEnd,\n        passiveListener\n      );\n      if (carousel.touchEvents.cancel) {\n        carousel.$wrapperEl.on(\n          carousel.touchEvents.cancel,\n          slideSelector,\n          onGestureEnd,\n          passiveListener\n        );\n      }\n    }\n\n    // Move image\n    carousel.$wrapperEl.on(\n      carousel.touchEvents.move,\n      `.${carousel.params.zoom.containerClass}`,\n      onTouchMove,\n      activeListenerWithCapture\n    );\n  }\n  function disable() {\n    const zoom = carousel.zoom;\n    if (!zoom.enabled) return;\n    const support = carousel.support;\n    zoom.enabled = false;\n\n    const { passiveListener, activeListenerWithCapture } = getListeners();\n    const slideSelector = getSlideSelector();\n\n    // Scale image\n    if (support.gestures) {\n      carousel.$wrapperEl.off(carousel.touchEvents.start, enableGestures, passiveListener);\n      carousel.$wrapperEl.off(carousel.touchEvents.end, disableGestures, passiveListener);\n    } else if (carousel.touchEvents.start === 'touchstart') {\n      carousel.$wrapperEl.off(\n        carousel.touchEvents.start,\n        slideSelector,\n        onGestureStart,\n        passiveListener\n      );\n      carousel.$wrapperEl.off(\n        carousel.touchEvents.move,\n        slideSelector,\n        onGestureChange,\n        activeListenerWithCapture\n      );\n      carousel.$wrapperEl.off(\n        carousel.touchEvents.end,\n        slideSelector,\n        onGestureEnd,\n        passiveListener\n      );\n      if (carousel.touchEvents.cancel) {\n        carousel.$wrapperEl.off(\n          carousel.touchEvents.cancel,\n          slideSelector,\n          onGestureEnd,\n          passiveListener\n        );\n      }\n    }\n\n    // Move image\n    carousel.$wrapperEl.off(\n      carousel.touchEvents.move,\n      `.${carousel.params.zoom.containerClass}`,\n      onTouchMove,\n      activeListenerWithCapture\n    );\n  }\n\n  on('init', () => {\n    if (carousel.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!carousel.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!carousel.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (\n      !carousel.animating &&\n      carousel.params.zoom.enabled &&\n      carousel.zoom.enabled &&\n      carousel.params.zoom.toggle\n    ) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (carousel.zoom.enabled && carousel.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (carousel.zoom.enabled && carousel.params.zoom.enabled && carousel.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n\n  Object.assign(carousel.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\nimport $ from '../../../shared/dom';\n\nexport default function Lazy({ carousel, extendParams, on, emit }) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n\n      elementClass: 'vts-carousel-lazy',\n      loadingClass: 'vts-carousel-lazy-loading',\n      loadedClass: 'vts-carousel-lazy-loaded',\n      preloaderClass: 'vts-carousel-lazy-preloader'\n    }\n  });\n\n  carousel.lazy = {};\n\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = carousel.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (carousel.slides.length === 0) return;\n    const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? carousel.$wrapperEl.children(\n          `.${carousel.params.slideClass}[data-carousel-slide-index=\"${index}\"]`\n        )\n      : carousel.slides.eq(index);\n\n    const $images = $slideEl.find(\n      `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`\n    );\n    if (\n      $slideEl.hasClass(params.elementClass) &&\n      !$slideEl.hasClass(params.loadedClass) &&\n      !$slideEl.hasClass(params.loadingClass)\n    ) {\n      $images.push($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      carousel.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (\n          typeof carousel === 'undefined' ||\n          carousel === null ||\n          !carousel ||\n          (carousel && !carousel.params) ||\n          carousel.destroyed\n        )\n          return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (carousel.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-carousel-slide-index');\n          if ($slideEl.hasClass(carousel.params.slideDuplicateClass)) {\n            const originalSlide = carousel.$wrapperEl.children(\n              `[data-carousel-slide-index=\"${slideOriginalIndex}\"]:not(.${carousel.params.slideDuplicateClass})`\n            );\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = carousel.$wrapperEl.children(\n              `.${carousel.params.slideDuplicateClass}[data-carousel-slide-index=\"${slideOriginalIndex}\"]`\n            );\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (carousel.params.autoHeight) {\n          carousel.updateAutoHeight();\n        }\n      });\n\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const { $wrapperEl, params: carouselParams, slides, activeIndex } = carousel;\n    const isVirtual = carousel.virtual && carouselParams.virtual.enabled;\n    const params = carouselParams.lazy;\n\n    let slidesPerView = carouselParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if (\n          $wrapperEl.children(`.${carouselParams.slideClass}[data-carousel-slide-index=\"${index}\"]`)\n            .length\n        ) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-carousel-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n    if (carousel.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${carouselParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-carousel-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = Math.ceil(slidesPerView);\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${carouselParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${carouselParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!carousel || carousel.destroyed) return;\n    const $scrollElement = carousel.params.lazy.scrollingElement\n      ? $(carousel.params.lazy.scrollingElement)\n      : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const carouselOffset = carousel.$el.offset();\n    const { rtlTranslate: rtl } = carousel;\n\n    let inView = false;\n\n    if (rtl) carouselOffset.left -= carousel.$el[0].scrollLeft;\n    const carouselCoord = [\n      [carouselOffset.left, carouselOffset.top],\n      [carouselOffset.left + carousel.width, carouselOffset.top],\n      [carouselOffset.left, carouselOffset.top + carousel.height],\n      [carouselOffset.left + carousel.width, carouselOffset.top + carousel.height]\n    ];\n    for (let i = 0; i < carouselCoord.length; i += 1) {\n      const point = carouselCoord[i];\n      if (\n        point[0] >= 0 &&\n        point[0] <= scrollElementWidth &&\n        point[1] >= 0 &&\n        point[1] <= scrollElementHeight\n      ) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n        inView = true;\n      }\n    }\n\n    const passiveListener =\n      carousel.touchEvents.start === 'touchstart' &&\n      carousel.support.passiveListener &&\n      carousel.params.passiveListeners\n        ? { passive: true, capture: false }\n        : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (carousel.params.lazy.enabled && carousel.params.preloadImages) {\n      carousel.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (carousel.params.lazy.enabled) {\n      if (carousel.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (\n      carousel.params.freeMode &&\n      carousel.params.freeMode.enabled &&\n      !carousel.params.freeMode.sticky\n    ) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (carousel.params.lazy.enabled) {\n      if (carousel.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (carousel.params.lazy.enabled) {\n      if (\n        carousel.params.lazy.loadOnTransitionStart ||\n        (!carousel.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n      ) {\n        if (carousel.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (carousel.params.lazy.enabled && !carousel.params.lazy.loadOnTransitionStart) {\n      if (carousel.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n      carousel.params;\n    if (\n      lazy.enabled &&\n      (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n    ) {\n      load();\n    }\n  });\n\n  on('destroy', () => {\n    if (!carousel.$el) return;\n    carousel.$el\n      .find(`.${carousel.params.lazy.loadingClass}`)\n      .removeClass(carousel.params.lazy.loadingClass);\n  });\n\n  Object.assign(carousel.lazy, {\n    load,\n    loadInSlide\n  });\n}\n","//@ts-nocheck\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../../shared/utils';\n\nexport default function Controller({ carousel, extendParams, on }) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  carousel.controller = {\n    control: undefined\n  };\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\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 (\n        ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n      );\n    };\n    return this;\n  }\n  // xxx: for now i will just save one spline function to to\n  function getInterpolateFunction(c) {\n    if (!carousel.controller.spline) {\n      carousel.controller.spline = carousel.params.loop\n        ? new LinearSpline(carousel.slidesGrid, c.slidesGrid)\n        : new LinearSpline(carousel.snapGrid, c.snapGrid);\n    }\n  }\n  function setTranslate(_t, byController) {\n    const controlled = carousel.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const carousel = carousel.constructor;\n    function setControlledTranslate(c) {\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 = carousel.rtlTranslate ? -carousel.translate : carousel.translate;\n      if (carousel.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 = -carousel.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || carousel.params.controller.by === 'container') {\n        multiplier =\n          (c.maxTranslate() - c.minTranslate()) /\n          (carousel.maxTranslate() - carousel.minTranslate());\n        controlledTranslate = (translate - carousel.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (carousel.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, carousel);\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 carousel) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof carousel && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const carousel = carousel.constructor;\n    const controlled = carousel.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, carousel);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && carousel.params.controller.by === 'slide') {\n            c.loopFix();\n          }\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 carousel) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof carousel && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!carousel.controller.control) return;\n    if (carousel.controller.spline) {\n      carousel.controller.spline = undefined;\n      delete carousel.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    carousel.controller.control = carousel.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 (!carousel.controller.control) return;\n    carousel.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!carousel.controller.control) return;\n    carousel.controller.setTransition(duration, byController);\n  });\n\n  Object.assign(carousel.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n","//@ts-nocheck\nimport classesToSelector from '../../../shared/classes-to-selector';\nimport $ from '../../../shared/dom';\n\nexport default function A11y({ carousel, extendParams, on }) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'vts-carousel-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n\n  carousel.a11y = {\n    clicked: false\n  };\n\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\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.attr('tabIndex', '0');\n  }\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = carousel.params.a11y;\n    const $targetEl = $(e.target);\n    if (\n      carousel.navigation &&\n      carousel.navigation.$nextEl &&\n      $targetEl.is(carousel.navigation.$nextEl)\n    ) {\n      if (!(carousel.isEnd && !carousel.params.loop)) {\n        carousel.slideNext();\n      }\n      if (carousel.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n    if (\n      carousel.navigation &&\n      carousel.navigation.$prevEl &&\n      $targetEl.is(carousel.navigation.$prevEl)\n    ) {\n      if (!(carousel.isBeginning && !carousel.params.loop)) {\n        carousel.slidePrev();\n      }\n      if (carousel.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (\n      carousel.pagination &&\n      $targetEl.is(classesToSelector(carousel.params.pagination.bulletClass))\n    ) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (carousel.params.loop || carousel.params.rewind || !carousel.navigation) return;\n    const { $nextEl, $prevEl } = carousel.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (carousel.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (carousel.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return carousel.pagination && carousel.pagination.bullets && carousel.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && carousel.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = carousel.params.a11y;\n    if (!hasPagination()) return;\n    carousel.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n      if (carousel.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n        if (!carousel.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel(\n            $bulletEl,\n            params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1)\n          );\n        }\n      }\n      if ($bulletEl.is(`.${carousel.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n  const handlePointerDown = () => {\n    carousel.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!carousel.destroyed) {\n          carousel.a11y.clicked = false;\n        }\n      });\n    });\n  };\n\n  const handleFocus = e => {\n    if (carousel.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${carousel.params.slideClass}`);\n    if (!slideEl || !carousel.slides.includes(slideEl)) return;\n    const isActive = carousel.slides.indexOf(slideEl) === carousel.activeIndex;\n    const isVisible =\n      carousel.params.watchSlidesProgress &&\n      carousel.visibleSlides &&\n      carousel.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (carousel.isHorizontal()) {\n      carousel.el.scrollLeft = 0;\n    } else {\n      carousel.el.scrollTop = 0;\n    }\n    carousel.slideTo(carousel.slides.indexOf(slideEl), 0);\n  };\n\n  const initSlides = () => {\n    const params = carousel.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(carousel.slides), params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole($(carousel.slides), params.slideRole);\n    }\n\n    const slidesLength = carousel.params.loop\n      ? carousel.slides.filter(el => !el.classList.contains(carousel.params.slideDuplicateClass))\n          .length\n      : carousel.slides.length;\n    if (params.slideLabelMessage) {\n      carousel.slides.each((slideEl, index) => {\n        const $slideEl = $(slideEl);\n        const slideIndex = carousel.params.loop\n          ? parseInt($slideEl.attr('data-carousel-slide-index'), 10)\n          : index;\n        const ariaLabelMessage = params.slideLabelMessage\n          .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n          .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel($slideEl, ariaLabelMessage);\n      });\n    }\n  };\n\n  const init = () => {\n    const params = carousel.params.a11y;\n\n    carousel.$el.append(liveRegion);\n\n    // Container\n    const $containerEl = carousel.$el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const $wrapperEl = carousel.$wrapperEl;\n    const wrapperId =\n      params.id || $wrapperEl.attr('id') || `carousel-wrapper-${getRandomNumber(16)}`;\n    const live = carousel.params.autoplay && carousel.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let $nextEl;\n    let $prevEl;\n    if (carousel.navigation && carousel.navigation.$nextEl) {\n      $nextEl = carousel.navigation.$nextEl;\n    }\n    if (carousel.navigation && carousel.navigation.$prevEl) {\n      $prevEl = carousel.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      carousel.pagination.$el.on(\n        'keydown',\n        classesToSelector(carousel.params.pagination.bulletClass),\n        onEnterOrSpaceKey\n      );\n    }\n\n    // Tab focus\n    carousel.$el.on('focus', handleFocus, true);\n    carousel.$el.on('pointerdown', handlePointerDown, true);\n    carousel.$el.on('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (carousel.navigation && carousel.navigation.$nextEl) {\n      $nextEl = carousel.navigation.$nextEl;\n    }\n    if (carousel.navigation && carousel.navigation.$prevEl) {\n      $prevEl = carousel.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      carousel.pagination.$el.off(\n        'keydown',\n        classesToSelector(carousel.params.pagination.bulletClass),\n        onEnterOrSpaceKey\n      );\n    }\n\n    // Tab focus\n    carousel.$el.off('focus', handleFocus, true);\n    carousel.$el.off('pointerdown', handlePointerDown, true);\n    carousel.$el.off('pointerup', handlePointerUp, true);\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(\n      `<span class=\"${carousel.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`\n    );\n  });\n\n  on('afterInit', () => {\n    if (!carousel.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!carousel.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!carousel.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!carousel.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!carousel.params.a11y.enabled) return;\n    destroy();\n  });\n}\n","//@ts-nocheck\nimport { getWindow } from 'ssr-window';\n\nexport default function History({ carousel, extendParams, on }) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text\n      .toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  };\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\n      .slice(1)\n      .split('/')\n      .filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !carousel.params.history.enabled) return;\n    let location;\n    if (carousel.params.url) {\n      location = new URL(carousel.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = carousel.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n    if (carousel.params.history.root.length > 0) {\n      let root = carousel.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    if (carousel.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 (carousel.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = carousel.slides.length; i < length; i += 1) {\n        const slide = carousel.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(carousel.params.slideDuplicateClass)) {\n          const index = slide.index();\n          carousel.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      carousel.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(carousel.params.url);\n    scrollToSlide(carousel.params.speed, paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!carousel.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      carousel.params.history.enabled = false;\n      carousel.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(carousel.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, carousel.params.runCallbacksOnInit);\n    if (!carousel.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!carousel.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (carousel.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (carousel.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(carousel.params.history.key, carousel.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && carousel.params.cssMode) {\n      setHistory(carousel.params.history.key, carousel.activeIndex);\n    }\n  });\n}\n","//@ts-nocheck\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../shared/dom';\n\nexport default function HashNavigation({ carousel, extendParams, emit, on }) {\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    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = carousel.slides.eq(carousel.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = carousel.$wrapperEl\n        .children(`.${carousel.params.slideClass}[data-hash=\"${newHash}\"]`)\n        .index();\n      if (typeof newIndex === 'undefined') return;\n      carousel.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !carousel.params.hashNavigation.enabled) return;\n    if (\n      carousel.params.hashNavigation.replaceState &&\n      window.history &&\n      window.history.replaceState\n    ) {\n      window.history.replaceState(\n        null,\n        null,\n        `#${carousel.slides.eq(carousel.activeIndex).attr('data-hash')}` || ''\n      );\n      emit('hashSet');\n    } else {\n      const slide = carousel.slides.eq(carousel.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (\n      !carousel.params.hashNavigation.enabled ||\n      (carousel.params.history && carousel.params.history.enabled)\n    )\n      return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = carousel.slides.length; i < length; i += 1) {\n        const slide = carousel.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(carousel.params.slideDuplicateClass)) {\n          const index = slide.index();\n          carousel.slideTo(index, speed, carousel.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (carousel.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (carousel.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (carousel.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (carousel.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && carousel.params.cssMode) {\n      setHash();\n    }\n  });\n}\n","//@ts-nocheck\nimport { isObject } from '../../../shared/utils';\nimport $ from '../../../shared/dom';\n\nexport default function Thumb({ carousel, extendParams, on }) {\n  extendParams({\n    thumbs: {\n      carousel: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'vts-carousel-slide-thumb-active',\n      thumbsContainerClass: 'vts-carousel-thumbs'\n    }\n  });\n\n  let initialized = false;\n  let carouselCreated = false;\n\n  carousel.thumbs = {\n    carousel: null\n  };\n\n  function onThumbClick() {\n    const thumbscarousel = carousel.thumbs.carousel;\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\n\n    const clickedIndex = thumbscarousel.clickedIndex;\n    const clickedSlide = thumbscarousel.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(carousel.params.thumbs.slideThumbActiveClass))\n      return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbscarousel.params.loop) {\n      slideToIndex = parseInt($(thumbscarousel.clickedSlide).attr('data-carousel-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (carousel.params.loop) {\n      let currentIndex = carousel.activeIndex;\n      if (carousel.slides.eq(currentIndex).hasClass(carousel.params.slideDuplicateClass)) {\n        carousel.loopFix();\n        // eslint-disable-next-line\n        carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\n        currentIndex = carousel.activeIndex;\n      }\n      const prevIndex = carousel.slides\n        .eq(currentIndex)\n        .prevAll(`[data-carousel-slide-index=\"${slideToIndex}\"]`)\n        .eq(0)\n        .index();\n      const nextIndex = carousel.slides\n        .eq(currentIndex)\n        .nextAll(`[data-carousel-slide-index=\"${slideToIndex}\"]`)\n        .eq(0)\n        .index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    carousel.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const { thumbs: thumbsParams } = carousel.params;\n    if (initialized) return false;\n    initialized = true;\n    const carouselClass = carousel.constructor;\n    if (thumbsParams.carousel instanceof carouselClass) {\n      carousel.thumbs.carousel = thumbsParams.carousel;\n      Object.assign(carousel.thumbs.carousel.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(carousel.thumbs.carousel.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.carousel)) {\n      const thumbscarouselParams = Object.assign({}, thumbsParams.carousel);\n      Object.assign(thumbscarouselParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      carousel.thumbs.carousel = new carouselClass(thumbscarouselParams);\n      carouselCreated = true;\n    }\n    carousel.thumbs.carousel.$el.addClass(carousel.params.thumbs.thumbsContainerClass);\n    carousel.thumbs.carousel.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbscarousel = carousel.thumbs.carousel;\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\n\n    const slidesPerView =\n      thumbscarousel.params.slidesPerView === 'auto'\n        ? thumbscarousel.slidesPerViewDynamic()\n        : thumbscarousel.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = carousel.params.thumbs.slideThumbActiveClass;\n\n    if (carousel.params.slidesPerView > 1 && !carousel.params.centeredSlides) {\n      thumbsToActivate = carousel.params.slidesPerView;\n    }\n\n    if (!carousel.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbscarousel.slides.removeClass(thumbActiveClass);\n    if (\n      thumbscarousel.params.loop ||\n      (thumbscarousel.params.virtual && thumbscarousel.params.virtual.enabled)\n    ) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbscarousel.$wrapperEl\n          .children(`[data-carousel-slide-index=\"${carousel.realIndex + i}\"]`)\n          .addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbscarousel.slides.eq(carousel.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n\n    const autoScrollOffset = carousel.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbscarousel.params.loop;\n    if (carousel.realIndex !== thumbscarousel.realIndex || useOffset) {\n      let currentThumbsIndex = thumbscarousel.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbscarousel.params.loop) {\n        if (\n          thumbscarousel.slides\n            .eq(currentThumbsIndex)\n            .hasClass(thumbscarousel.params.slideDuplicateClass)\n        ) {\n          thumbscarousel.loopFix();\n          // eslint-disable-next-line\n          thumbscarousel._clientLeft = thumbscarousel.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbscarousel.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbscarousel.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-carousel-slide-index=\"${carousel.realIndex}\"]`)\n          .eq(0)\n          .index();\n        const nextThumbsIndex = thumbscarousel.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-carousel-slide-index=\"${carousel.realIndex}\"]`)\n          .eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex =\n            thumbscarousel.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n        direction = carousel.activeIndex > carousel.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = carousel.realIndex;\n        direction = newThumbsIndex > carousel.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (\n        thumbscarousel.visibleSlidesIndexes &&\n        thumbscarousel.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n      ) {\n        if (thumbscarousel.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 (\n          newThumbsIndex > currentThumbsIndex &&\n          thumbscarousel.params.slidesPerGroup === 1\n        ) {\n          // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbscarousel.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const { thumbs } = carousel.params;\n    if (!thumbs || !thumbs.carousel) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbscarousel = carousel.thumbs.carousel;\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\n    thumbscarousel.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbscarousel = carousel.thumbs.carousel;\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\n    if (carouselCreated) {\n      thumbscarousel.destroy();\n    }\n  });\n\n  Object.assign(carousel.thumbs, {\n    init,\n    update\n  });\n}\n","//@ts-nocheck\nimport { now } from '../../../shared/utils';\n\nexport default function freeMode({ carousel, extendParams, emit, once }) {\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\n  function onTouchStart() {\n    const translate = carousel.getTranslate();\n    carousel.setTranslate(translate);\n    carousel.setTransition(0);\n    carousel.touchEventsData.velocities.length = 0;\n    carousel.freeMode.onTouchEnd({\n      currentPos: carousel.rtl ? carousel.translate : -carousel.translate\n    });\n  }\n\n  function onTouchMove() {\n    const { touchEventsData: data, touches } = carousel;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[carousel.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[carousel.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd({ currentPos }) {\n    const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = carousel;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -carousel.minTranslate()) {\n      carousel.slideTo(carousel.activeIndex);\n      return;\n    }\n    if (currentPos > -carousel.maxTranslate()) {\n      if (carousel.slides.length < snapGrid.length) {\n        carousel.slideTo(snapGrid.length - 1);\n      } else {\n        carousel.slideTo(carousel.slides.length - 1);\n      }\n      return;\n    }\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\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        carousel.velocity = distance / time;\n        carousel.velocity /= 2;\n        if (Math.abs(carousel.velocity) < params.freeMode.minimumVelocity) {\n          carousel.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          carousel.velocity = 0;\n        }\n      } else {\n        carousel.velocity = 0;\n      }\n      carousel.velocity *= params.freeMode.momentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = carousel.velocity * momentumDuration;\n\n      let newPosition = carousel.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(carousel.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < carousel.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + carousel.maxTranslate() < -bounceAmount) {\n            newPosition = carousel.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = carousel.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = carousel.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > carousel.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - carousel.minTranslate() > bounceAmount) {\n            newPosition = carousel.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = carousel.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = carousel.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\n        if (\n          Math.abs(snapGrid[nextSlide] - newPosition) <\n            Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n          carousel.swipeDirection === 'next'\n        ) {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          carousel.loopFix();\n        });\n      }\n      // Fix duration\n      if (carousel.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - carousel.translate) / carousel.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - carousel.translate) / carousel.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) - carousel.translate);\n          const currentSlideSize = carousel.slidesSizesGrid[carousel.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        carousel.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && doBounce) {\n        carousel.updateProgress(afterBouncePosition);\n        carousel.setTransition(momentumDuration);\n        carousel.setTranslate(newPosition);\n        carousel.transitionStart(true, carousel.swipeDirection);\n        carousel.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!carousel || carousel.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          carousel.setTransition(params.speed);\n          setTimeout(() => {\n            carousel.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!carousel || carousel.destroyed) return;\n              carousel.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (carousel.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        carousel.updateProgress(newPosition);\n        carousel.setTransition(momentumDuration);\n        carousel.setTranslate(newPosition);\n        carousel.transitionStart(true, carousel.swipeDirection);\n        if (!carousel.animating) {\n          carousel.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!carousel || carousel.destroyed) return;\n            carousel.transitionEnd();\n          });\n        }\n      } else {\n        carousel.updateProgress(newPosition);\n      }\n\n      carousel.updateActiveIndex();\n      carousel.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      carousel.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      carousel.updateProgress();\n      carousel.updateActiveIndex();\n      carousel.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(carousel, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n","//@ts-nocheck\nexport default function Grid({ carousel, extendParams }) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const { slidesPerView } = carousel.params;\n    const { rows, fill } = carousel.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const { slidesPerGroup, spaceBetween } = carousel.params;\n    const { rows, fill } = carousel.params.grid;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup =\n        groupIndex === 0\n          ? slidesPerGroup\n          : Math.min(\n              Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n              slidesPerGroup\n            );\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n      newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\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.css(\n      getDirectionLabel('margin-top'),\n      row !== 0 ? spaceBetween && `${spaceBetween}px` : ''\n    );\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const { spaceBetween, centeredSlides, roundLengths } = carousel.params;\n    const { rows } = carousel.params.grid;\n    carousel.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    carousel.virtualSize = Math.ceil(carousel.virtualSize / rows) - spaceBetween;\n    carousel.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${carousel.virtualSize + spaceBetween}px`\n    });\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\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] < carousel.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  carousel.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n","//@ts-nocheck\nexport default function appendSlide(slides) {\n  const carousel = this;\n  const { $wrapperEl, params } = carousel;\n  if (params.loop) {\n    carousel.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    carousel.loopCreate();\n  }\n  if (!params.observer) {\n    carousel.update();\n  }\n}\n","//@ts-nocheck\nexport default function prependSlide(slides) {\n  const carousel = this;\n  const { params, $wrapperEl, activeIndex } = carousel;\n\n  if (params.loop) {\n    carousel.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    carousel.loopCreate();\n  }\n  if (!params.observer) {\n    carousel.update();\n  }\n  carousel.slideTo(newActiveIndex, 0, false);\n}\n","//@ts-nocheck\nexport default function addSlide(index, slides) {\n  const carousel = this;\n  const { $wrapperEl, params, activeIndex } = carousel;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= carousel.loopedSlides;\n    carousel.loopDestroy();\n    carousel.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = carousel.slides.length;\n  if (index <= 0) {\n    carousel.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    carousel.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = carousel.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex =\n      activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    carousel.loopCreate();\n  }\n  if (!params.observer) {\n    carousel.update();\n  }\n  if (params.loop) {\n    carousel.slideTo(newActiveIndex + carousel.loopedSlides, 0, false);\n  } else {\n    carousel.slideTo(newActiveIndex, 0, false);\n  }\n}\n","//@ts-nocheck\nexport default function removeSlide(slidesIndexes) {\n  const carousel = this;\n  const { params, $wrapperEl, activeIndex } = carousel;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= carousel.loopedSlides;\n    carousel.loopDestroy();\n    carousel.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (carousel.slides[indexToRemove]) carousel.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (carousel.slides[indexToRemove]) carousel.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    carousel.loopCreate();\n  }\n\n  if (!params.observer) {\n    carousel.update();\n  }\n  if (params.loop) {\n    carousel.slideTo(newActiveIndex + carousel.loopedSlides, 0, false);\n  } else {\n    carousel.slideTo(newActiveIndex, 0, false);\n  }\n}\n","//@ts-nocheck\nexport default function removeAllSlides() {\n  const carousel = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < carousel.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  carousel.removeSlide(slidesIndexes);\n}\n","//@ts-nocheck\nimport appendSlide from './methods/appendSlide';\nimport prependSlide from './methods/prependSlide';\nimport addSlide from './methods/addSlide';\nimport removeSlide from './methods/removeSlide';\nimport removeAllSlides from './methods/removeAllSlides';\n\nexport default function Manipulation({ carousel }) {\n  Object.assign(carousel, {\n    appendSlide: appendSlide.bind(carousel),\n    prependSlide: prependSlide.bind(carousel),\n    addSlide: addSlide.bind(carousel),\n    removeSlide: removeSlide.bind(carousel),\n    removeAllSlides: removeAllSlides.bind(carousel)\n  });\n}\n","//@ts-nocheck\nexport default function effectInit(params) {\n  const {\n    effect,\n    carousel,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams,\n    containerModifierClass\n  } = params;\n\n  on('beforeInit', () => {\n    if (carousel.params.effect !== effect) return;\n    carousel.classNames.push(`${carousel.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      carousel.classNames.push(`${carousel.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n    Object.assign(carousel.params, overwriteParamsResult);\n    Object.assign(carousel.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (carousel.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (carousel.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (carousel.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      carousel.slides.each(slideEl => {\n        const $slideEl = carousel.$(slideEl);\n        $slideEl\n          .find(\n            '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\n          )\n          .remove();\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (carousel.params.effect !== effect) return;\n    if (!carousel.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && carousel.slides && carousel.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n","//@ts-nocheck\nexport default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n  return $slideEl;\n}\n","//@ts-nocheck\nexport default function effectVirtualTransitionEnd({ carousel, duration, transformEl, allSlides }) {\n  const { slides, activeIndex, $wrapperEl } = carousel;\n  if (carousel.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl\n        ? slides.eq(activeIndex).find(transformEl)\n        : slides.eq(activeIndex);\n    }\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!carousel || carousel.destroyed) return;\n      eventTriggered = true;\n      carousel.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}\n","//@ts-nocheck\nimport effectInit from '../../../shared/effect-init';\nimport effectTarget from '../../../shared/effect-target';\nimport effectVirtualTransitionEnd from '../../../shared/effect-virtual-transition-end';\n\nexport default function EffectFade({ carousel, extendParams, on }) {\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const { slides } = carousel;\n    const params = carousel.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = carousel.slides.eq(i);\n      const offset = $slideEl[0].carouselSlideOffset;\n      let tx = -offset;\n      if (!carousel.params.virtualTranslate) tx -= carousel.translate;\n      let ty = 0;\n      if (!carousel.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = carousel.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl\n        .css({\n          opacity: slideOpacity\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n  const setTransition = duration => {\n    const { transformEl } = carousel.params.fadeEffect;\n    const $transitionElements = transformEl ? carousel.slides.find(transformEl) : carousel.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({ carousel, duration, transformEl, allSlides: true });\n  };\n\n  effectInit({\n    effect: 'fade',\n    carousel,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !carousel.params.cssMode\n    })\n  });\n}\n","//@ts-nocheck\nimport $ from '../../../shared/dom';\nimport effectInit from '../../../shared/effect-init';\n\nexport default function EffectCube({ carousel, extendParams, on }) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal\n      ? $slideEl.find('.vts-carousel-slide-shadow-left')\n      : $slideEl.find('.vts-carousel-slide-shadow-top');\n    let shadowAfter = isHorizontal\n      ? $slideEl.find('.vts-carousel-slide-shadow-right')\n      : $slideEl.find('.vts-carousel-slide-shadow-bottom');\n    if (shadowBefore.length === 0) {\n      shadowBefore = $(\n        `<div class=\"vts-carousel-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`\n      );\n      $slideEl.append(shadowBefore);\n    }\n    if (shadowAfter.length === 0) {\n      shadowAfter = $(\n        `<div class=\"vts-carousel-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`\n      );\n      $slideEl.append(shadowAfter);\n    }\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = carousel.isHorizontal();\n    carousel.slides.each(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows($(slideEl), progress, isHorizontal);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: carouselWidth,\n      height: carouselHeight,\n      rtlTranslate: rtl,\n      size: carouselSize,\n      browser\n    } = carousel;\n    const params = carousel.params.cubeEffect;\n    const isHorizontal = carousel.isHorizontal();\n    const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.vts-carousel-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"vts-carousel-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${carouselWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.vts-carousel-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"vts-carousel-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-carousel-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[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * carouselSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * carouselSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = carouselSize + round * 4 * carouselSize;\n        tz = carouselSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -carouselSize;\n        tz = 3 * carouselSize + carouselSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n        isHorizontal ? slideAngle : 0\n      }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.transform(transform);\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, isHorizontal);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${carouselSize / 2}px`,\n      'transform-origin': `50% 50% -${carouselSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(\n          `translate3d(0px, ${carouselWidth / 2 + params.shadowOffset}px, ${\n            -carouselWidth / 2\n          }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`\n        );\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier =\n          1.5 -\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n            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.transform(\n          `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${carouselHeight / 2 + offset}px, ${\n            -carouselHeight / 2 / scale2\n          }px) rotateX(-90deg)`\n        );\n      }\n    }\n    const zFactor = browser.isSafari || browser.isWebView ? -carouselSize / 2 : 0;\n    $wrapperEl.transform(\n      `translate3d(0px,0,${zFactor}px) rotateX(${\n        carousel.isHorizontal() ? 0 : wrapperRotate\n      }deg) rotateY(${carousel.isHorizontal() ? -wrapperRotate : 0}deg)`\n    );\n    $wrapperEl[0].style.setProperty('--carousel-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const { $el, slides } = carousel;\n    slides\n      .transition(duration)\n      .find(\n        '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\n      )\n      .transition(duration);\n    if (carousel.params.cubeEffect.shadow && !carousel.isHorizontal()) {\n      $el.find('.vts-carousel-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    carousel,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => carousel.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","//@ts-nocheck\nimport $ from './dom';\n\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `carousel-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"vts-carousel-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n  return $shadowEl;\n}\n","//@ts-nocheck\nimport $ from '../../../shared/dom';\nimport createShadow from '../../../shared/create-shadow';\nimport effectInit from '../../../shared/effect-init';\nimport effectTarget from '../../../shared/effect-target';\nimport effectVirtualTransitionEnd from '../../../shared/effect-virtual-transition-end';\n\nexport default function EffectFlip({ carousel, extendParams, on }) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, params) => {\n    let shadowBefore = carousel.isHorizontal()\n      ? $slideEl.find('.vts-carousel-slide-shadow-left')\n      : $slideEl.find('.vts-carousel-slide-shadow-top');\n    let shadowAfter = carousel.isHorizontal()\n      ? $slideEl.find('.vts-carousel-slide-shadow-right')\n      : $slideEl.find('.vts-carousel-slide-shadow-bottom');\n    if (shadowBefore.length === 0) {\n      shadowBefore = createShadow(params, $slideEl, carousel.isHorizontal() ? 'left' : 'top');\n    }\n    if (shadowAfter.length === 0) {\n      shadowAfter = createShadow(params, $slideEl, carousel.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // Set shadows\n    const params = carousel.params.flipEffect;\n    carousel.slides.each(slideEl => {\n      const $slideEl = $(slideEl);\n      let progress = $slideEl[0].progress;\n      if (carousel.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows($slideEl, progress, params);\n    });\n  };\n\n  const setTranslate = () => {\n    const { slides, rtlTranslate: rtl } = carousel;\n    const params = carousel.params.flipEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (carousel.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].carouselSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = carousel.params.cssMode ? -offset - carousel.translate : -offset;\n      let ty = 0;\n      if (!carousel.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, params);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const { transformEl } = carousel.params.flipEffect;\n    const $transitionElements = transformEl ? carousel.slides.find(transformEl) : carousel.slides;\n    $transitionElements\n      .transition(duration)\n      .find(\n        '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\n      )\n      .transition(duration);\n    effectVirtualTransitionEnd({ carousel, duration, transformEl });\n  };\n\n  effectInit({\n    effect: 'flip',\n    carousel,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => carousel.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !carousel.params.cssMode\n    })\n  });\n}\n","import Carousel from './core/core';\nimport Virtual from './core/modules/virtual/virtual';\nimport Keyboard from './core/modules/keyboard/keyboard';\nimport Mousewheel from './core/modules/mousewheel/mousewheel';\nimport Navigation from './core/modules/navigation/navigation';\nimport Pagination from './core/modules/pagination/pagination';\nimport Scrollbar from './core/modules/scrollbar/scrollbar';\nimport Parallax from './core/modules/parallax/parallax';\nimport Zoom from './core/modules/zoom/zoom';\nimport Lazy from './core/modules/lazy/lazy';\nimport Controller from './core/modules/controller/controller';\nimport A11y from './core/modules/a11y/a11y';\nimport History from './core/modules/history/history';\nimport Hashnavigation from './core/modules/hash-navigation/hash-navigation';\nimport Autoplay from './core/modules/autoplay/autoplay';\nimport Thumbs from './core/modules/thumbs/thumbs';\nimport Freemode from './core/modules/free-mode/free-mode';\nimport Grid from './core/modules/grid/grid';\nimport Manipulation from './core/modules/manipulation/manipulation';\nimport Effectfade from './core/modules/effect-fade/effect-fade';\nimport Effectcube from './core/modules/effect-cube/effect-cube';\nimport Effectflip from './core/modules/effect-flip/effect-flip';\n// import Effectcoverflow from './core/modules/effect-coverflow/effect-coverflow';\n// import Effectcreative from './core/modules/effect-creative/effect-creative';\n// import Effectcards from './core/modules/effect-cards/effect-cards';\n\n// Carousel Class\nconst modules = [\n  Virtual,\n  Keyboard,\n  Mousewheel,\n  Navigation,\n  Pagination,\n  Scrollbar,\n  Parallax,\n  Zoom,\n  Lazy,\n  Controller,\n  A11y,\n  History,\n  Hashnavigation,\n  Autoplay,\n  Thumbs,\n  Freemode,\n  Grid,\n  Manipulation,\n  Effectfade,\n  Effectcube,\n  Effectflip\n  // Effectcoverflow,\n  // Effectcreative,\n  // Effectcards\n];\nCarousel.use(modules);\n\nexport default Carousel;\n","/* underscore in name -> watch for changes */\nexport const paramsList = [\n  'init',\n  'enabled',\n  'touchEventsTarget',\n  'initialSlide',\n  'vtsSpeed',\n  'cssMode',\n  'updateOnWindowResize',\n  'resizeObserver',\n  'nested',\n  'focusableElements',\n  '_width',\n  '_height',\n  'preventInteractionOnTransition',\n  'userAgent',\n  'url',\n  '_freeMode',\n  '_autoHeight',\n  'setWrapperSize',\n  'virtualTranslate',\n\n  'vtsEffect',\n  'vtsDirection',\n  'vtsEdgeSwipeDetection',\n  'vtsEdgeSwipeThreshold',\n  'vtsBreakpoints',\n  'vtsSpaceBetween',\n  'vtsSlidesPerView',\n  'vtsLoop',\n  'vtsLoopAdditionalSlides',\n  'vtsLoopedSlides',\n  'vtsAllowSlidePrev',\n  'vtsAllowSlideNext',\n\n  'maxBackfaceHiddenSlides',\n  '_grid',\n  '_slidesPerGroup',\n  '_slidesPerGroupSkip',\n  '_slidesPerGroupAuto',\n  '_centeredSlides',\n  '_centeredSlidesBounds',\n  '_slidesOffsetBefore',\n  '_slidesOffsetAfter',\n  'normalizeSlideIndex',\n  '_centerInsufficientSlides',\n  '_watchOverflow',\n  'roundLengths',\n  'touchRatio',\n  'touchAngle',\n  'simulateTouch',\n  '_shortSwipes',\n  '_longSwipes',\n  'longSwipesRatio',\n  'longSwipesMs',\n  '_followFinger',\n  'allowTouchMove',\n  '_threshold',\n  'touchMoveStopPropagation',\n  'touchStartPreventDefault',\n  'touchStartForcePreventDefault',\n  'touchReleaseOnEdges',\n  'uniqueNavElements',\n  '_resistance',\n  '_resistanceRatio',\n  '_watchSlidesProgress',\n  '_grabCursor',\n  'preventClicks',\n  'preventClicksPropagation',\n  '_slideToClickedSlide',\n  '_preloadImages',\n  'updateOnImagesReady',\n\n  '_loopedSlidesLimit',\n  '_loopFillGroupWithBlank',\n  'loopPreventsSlide',\n  '_rewind',\n\n  '_swipeHandler',\n  '_noSwiping',\n  'noSwipingClass',\n  'noSwipingSelector',\n  'passiveListeners',\n  'containerModifierClass',\n  'vtsSlideClass',\n  'slideBlankClass',\n  'slideActiveClass',\n  'vtsSlideDuplicateClass',\n  'slideVisibleClass',\n  'slideDuplicateClass',\n  'slideNextClass',\n  'slideDuplicateNextClass',\n  'slidePrevClass',\n  'slideDuplicatePrevClass',\n  'vtsWrapperClass',\n  'runCallbacksOnInit',\n  'observer',\n  'observeParents',\n  'observeSlideChildren',\n\n  // modules\n  'a11y',\n  'vtsAutoplay',\n  'vtsController',\n  'coverflowEffect',\n  'cubeEffect',\n  'fadeEffect',\n  'flipEffect',\n  'creativeEffect',\n  'cardsEffect',\n  'hashNavigation',\n  'history',\n  'keyboard',\n  'lazy',\n  'mousewheel',\n  '_vtsNavigation',\n  '_vtsPagination',\n  'parallax',\n  '_vtsScrollbar',\n  'vtsThumbs',\n  '_vtsVirtual',\n  'zoom',\n  'on'\n];\n","export function isObject(o: any): boolean {\n  return (\n    typeof o === 'object' &&\n    o !== null &&\n    o.constructor &&\n    Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n  );\n}\n\nexport function isEnabled(val: boolean | { enabled?: boolean }) {\n  return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n  return (\n    (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n    !(\n      typeof obj !== 'boolean' &&\n      obj.el !== el?.nativeElement &&\n      (typeof obj.el === 'string' || typeof obj.el === 'object')\n    )\n  );\n}\n\nexport function extend(target: any, src: any) {\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src)\n    .filter(key => noExtend.indexOf(key) < 0)\n    .forEach(key => {\n      if (typeof target[key] === 'undefined') {\n        target[key] = src[key];\n        return;\n      }\n      if (\n        typeof target[key] !== 'boolean' &&\n        typeof target[key] !== 'function' &&\n        typeof target[key] !== 'object' &&\n        target[key] &&\n        !src[key]\n      ) {\n        return;\n      }\n      if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n        if (src[key].__carousel__) target[key] = src[key];\n        else extend(target[key], src[key]);\n      } else {\n        target[key] = src[key];\n      }\n    });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n  return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['vtsScrollbar', 'vtsVirtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n  if (isObject(val)) {\n    return val;\n  }\n\n  if (coerceBooleanProperty(val) === true) {\n    return obj;\n  }\n\n  return false;\n}\n","import { camelCase } from '@ui-vts-kit/ng-vts/core/util';\nimport Carousel from '../carousel';\nimport { paramsList } from './params-list';\nimport { extend, isObject } from './utils';\ntype KeyValueType = { [x: string]: any };\n\nexport const allowedParams = paramsList;\nexport const getKey = (key: string) => camelCase(key.replace(/^_/, '').replace(/^vts/, ''));\n\nexport function getParams(obj: any = {}) {\n  const params: any = {\n    on: {}\n  };\n  // const events = {};\n  const passedParams: KeyValueType = {};\n  extend(params, Carousel.defaults);\n  extend(params, Carousel.extendedDefaults);\n  params._emitClasses = true;\n  params.init = false;\n\n  const rest: KeyValueType = {};\n  Object.keys(obj).forEach((key: string) => {\n    if (allowedParams.indexOf(key) >= 0) {\n      const _key = getKey(key);\n      if (isObject(obj[key])) {\n        params[_key] = {};\n        passedParams[_key] = {};\n        extend(params[_key], obj[key]);\n        extend(passedParams[_key], obj[key]);\n      } else {\n        params[_key] = obj[key];\n        passedParams[_key] = obj[key];\n      }\n    } else {\n      rest[key] = obj[key];\n    }\n  });\n  ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n    if (params[key] === true) params[key] = {};\n    if (params[key] === false) delete params[key];\n  });\n\n  return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './lib/utils/utils';\n@Directive({\n  selector: 'ng-template[vtsCarouselSlide]'\n})\nexport class VtsCarouselSlideDirective {\n  @Input() virtualIndex: number = 0;\n  @Input() class: string = '';\n  @Input()\n  set ngClass(val: string) {\n    this.class = [this.class || '', val].join(' ');\n  }\n  @Input('data-carousel-autoplay') autoplayDelay: string | null = null;\n  @Input()\n  set zoom(val: boolean) {\n    this._zoom = coerceBooleanProperty(val);\n  }\n  get zoom() {\n    return this._zoom;\n  }\n  private _zoom: boolean = false;\n  slideIndex: number = 1;\n  get classNames() {\n    return this._classNames;\n  }\n  set classNames(val) {\n    if (this._classNames === val) {\n      return;\n    }\n    this._classNames = val;\n    this.slideData = {\n      isActive: this._hasClass([\n        'vts-carousel-slide-active',\n        'vts-carousel-slide-duplicate-active'\n      ]),\n      isVisible: this._hasClass(['vts-carousel-slide-visible']),\n      isDuplicate: this._hasClass(['vts-carousel-slide-duplicate']),\n      isPrev: this._hasClass(['vts-carousel-slide-prev', 'vts-carousel-slide-duplicate-prev']),\n      isNext: this._hasClass(['vts-carousel-slide-next', 'vts-carousel-slide-duplicate-next'])\n    };\n  }\n\n  private _hasClass(classNames: string[]) {\n    return classNames.some(className => this._classNames.indexOf(className) >= 0);\n  }\n  slideData = {\n    isActive: false,\n    isPrev: false,\n    isNext: false,\n    isVisible: false,\n    isDuplicate: false\n  };\n\n  private _classNames: string = '';\n  constructor(public template: TemplateRef<any>) {}\n}\n","import { CarouselEvents } from '../types/carousel-events';\n\nexport type IEventMappers = {\n  activeIndexChange: (args: Parameters<CarouselEvents['activeIndexChange']>) => number;\n  slidesLengthChange: (args: Parameters<CarouselEvents['slidesLengthChange']>) => number;\n};\n\nexport const EventMappers: IEventMappers = {\n  activeIndexChange: ([c]) => c.realIndex,\n  slidesLengthChange: ([c]) => c.slides.length\n};\n","import { Component, ElementRef, ViewEncapsulation, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'vts-carousel-pagination,[vts-carousel-pagination]',\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'vtsCarouselPagination',\n  template: '<ng-content></ng-content>'\n})\nexport class VtsCarouselPaginationComponent implements OnInit {\n  constructor(public elementRef: ElementRef) {}\n\n  ngOnInit(): void {}\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n  ContentChild\n} from '@angular/core';\nimport Carousel from './lib/carousel';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './lib/utils/get-params';\nimport { VtsCarouselSlideDirective } from './carousel-slide.directive';\nimport { EventsParams } from './carousel-events';\nimport {\n  extend,\n  isObject,\n  setProperty,\n  ignoreNgOnChanges,\n  coerceBooleanProperty,\n  isShowEl,\n  isEnabled\n} from './lib/utils/utils';\nimport {\n  CarouselOptions as VtsCarouselOptions,\n  CarouselEvents as VtsCarouselEvents,\n  NavigationOptions as VtsCarouselNavigationOptions,\n  PaginationOptions as VtsCarouselPaginationOptions,\n  ScrollbarOptions as VtsCarouselScrollbarOptions,\n  VirtualOptions as VtsCarouselVirtualOptions,\n  ControllerOptions as VtsCarouselControllerOptions,\n  ThumbsOptions as VtsCarouselThumbsOptions,\n  AutoplayOptions as VtsCarouselAutoplayOptions,\n  ICarousel\n} from './lib/types';\nimport { isPlatformBrowser } from '@angular/common';\nimport { VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { camelCase, upperFirst } from '@ui-vts-kit/ng-vts/core/util';\nimport { EventMappers } from './lib/utils/events';\nimport { VtsCarouselPaginationComponent } from './carousel-pagination.component';\nimport { VtsDestroyService } from '@ui-vts-kit/ng-vts/core/services';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n  selector: 'vts-carousel',\n  templateUrl: './carousel.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'vtsCarousel',\n  providers: [VtsDestroyService]\n})\nexport class VtsCarouselComponent implements OnInit {\n  // @Input() enabled?: boolean;\n  // @Input() on?: \"on\";\n  // @Input() touchEventsTarget: \"touchEventsTarget\";\n  // @Input() initialSlide: \"initialSlide\";\n  // @Input() cssMode: \"cssMode\";\n  // @Input() updateOnWindowResize: \"updateOnWindowResize\";\n  // @Input() resizeObserver: \"resizeObserver\";\n  // @Input() nested: \"nested\";\n  // @Input() focusableElements: \"focusableElements\";\n  // @Input() width: \"width\";\n  // @Input() height: \"height\";\n  // @Input() preventInteractionOnTransition: \"preventInteractionOnTransition\";\n  // @Input() userAgent: \"userAgent\";\n  // @Input() url: \"url\";\n  // @Input() freeMode: \"freeMode\";\n  // @Input() autoHeight: \"autoHeight\";\n  // @Input() setWrapperSize: \"setWrapperSize\";\n  // @Input() virtualTranslate: \"virtualTranslate\";\n  // @Input() maxBackfaceHiddenSlides: \"maxBackfaceHiddenSlides\";\n  // @Input() grid: \"grid\";\n  // @Input() slidesPerGroup: \"slidesPerGroup\";\n  // @Input() slidesPerGroupSkip: \"slidesPerGroupSkip\";\n  // @Input() centeredSlides: \"centeredSlides\";\n  // @Input() centeredSlidesBounds: \"centeredSlidesBounds\";\n  // @Input() slidesOffsetBefore: \"slidesOffsetBefore\";\n  // @Input() slidesOffsetAfter: \"slidesOffsetAfter\";\n  // @Input() normalizeSlideIndex: \"normalizeSlideIndex\";\n  // @Input() centerInsufficientSlides: \"centerInsufficientSlides\";\n  // @Input() watchOverflow: \"watchOverflow\";\n  // @Input() roundLengths: \"roundLengths\";\n  // @Input() touchRatio: \"touchRatio\";\n  // @Input() touchAngle: \"touchAngle\";\n  // @Input() simulateTouch: \"simulateTouch\";\n  // @Input() shortSwipes: \"shortSwipes\";\n  // @Input() longSwipes: \"longSwipes\";\n  // @Input() longSwipesRatio: \"longSwipesRatio\";\n  // @Input() longSwipesMs: \"longSwipesMs\";\n  // @Input() followFinger: \"followFinger\";\n  // @Input() allowTouchMove: \"allowTouchMove\";\n  // @Input() threshold: \"threshold\";\n  // @Input() touchMoveStopPropagation: \"touchMoveStopPropagation\";\n  // @Input() touchStartPreventDefault: \"touchStartPreventDefault\";\n  // @Input() touchStartForcePreventDefault: \"touchStartForcePreventDefault\";\n  // @Input() touchReleaseOnEdges: \"touchReleaseOnEdges\";\n  // @Input() uniqueNavElements: \"uniqueNavElements\";\n  // @Input() resistance: \"resistance\";\n  // @Input() resistanceRatio: \"resistanceRatio\";\n  // @Input() watchSlidesProgress: \"watchSlidesProgress\";\n  // @Input() grabCursor: \"grabCursor\";\n  // @Input() preventClicks: \"preventClicks\";\n  // @Input() preventClicksPropagation: \"preventClicksPropagation\";\n  // @Input() slideToClickedSlide: \"slideToClickedSlide\";\n  // @Input() preloadImages: \"preloadImages\";\n  // @Input() updateOnImagesReady: \"updateOnImagesReady\";\n  // @Input() loopedSlidesLimit: \"loopedSlidesLimit\";\n  // @Input() loopFillGroupWithBlank: \"loopFillGroupWithBlank\";\n  // @Input() loopPreventsSlide: \"loopPreventsSlide\";\n  // @Input() rewind: \"rewind\";\n  // @Input() swipeHandler: \"swipeHandler\";\n  // @Input() noSwiping: \"noSwiping\";\n  // @Input() noSwipingClass: \"noSwipingClass\";\n  // @Input() noSwipingSelector: \"noSwipingSelector\";\n  // @Input() passiveListeners: \"passiveListeners\";\n  // @Input() containerModifierClass: \"containerModifierClass\";\n  // @Input() slideBlankClass: \"slideBlankClass\";\n  // @Input() slideActiveClass: \"slideActiveClass\";\n  // @Input() slideDuplicateActiveClass: \"slideDuplicateActiveClass\";\n  // @Input() slideVisibleClass: \"slideVisibleClass\";\n  // @Input() slideNextClass: \"slideNextClass\";\n  // @Input() slideDuplicateNextClass: \"slideDuplicateNextClass\";\n  // @Input() slidePrevClass: \"slidePrevClass\";\n  // @Input() slideDuplicatePrevClass: \"slideDuplicatePrevClass\";\n  // @Input() runCallbacksOnInit: \"runCallbacksOnInit\";\n  // @Input() observeParents: \"observeParents\";\n  // @Input() observeSlideChildren: \"observeSlideChildren\";\n  // @Input() a11y: \"a11y\";\n  // @Input() coverflowEffect: \"coverflowEffect\";\n  // @Input() cubeEffect: \"cubeEffect\";\n  // @Input() fadeEffect: \"fadeEffect\";\n  // @Input() flipEffect: \"flipEffect\";\n  // @Input() creativeEffect: \"creativeEffect\";\n  // @Input() cardsEffect: \"cardsEffect\";\n  // @Input() hashNavigation: \"hashNavigation\";\n  // @Input() history: \"history\";\n  // @Input() keyboard: \"keyboard\";\n  // @Input() lazy: \"lazy\";\n  // @Input() mousewheel: \"mousewheel\";\n  // @Input() parallax: \"parallax\";\n  // @Input() zoom: \"zoom\";\n\n  @Input() vtsInitialSlide?: number = 0;\n  @Input() vtsDirection?: VtsCarouselOptions['direction'] = 'horizontal';\n  @Input() vtsSpeed?: number;\n  @Input() vtsEdgeSwipeDetection: boolean | string = '';\n  @Input() vtsEdgeSwipeThreshold: number = 1;\n  @Input() vtsBreakpoints?: VtsCarouselBreakpointOptions;\n  @Input() vtsSpaceBetween?: number;\n  @Input() vtsSlidesPerView?: number | 'auto';\n  @Input() vtsLoop?: boolean;\n  vtsLoopAdditionalSlides?: number;\n  vtsLoopedSlides?: number | null;\n  @Input() vtsAllowSlidePrev?: boolean;\n  @Input() vtsAllowSlideNext?: boolean;\n  @Input() vtsSlideClass?: string = 'vts-carousel-slide';\n  @Input() vtsSlideDuplicateClass: string = 'slideDuplicateClass';\n  @Input() vtsWrapperClass: string = 'vts-carousel-wrapper';\n  @Input() vtsAutoplay?: VtsCarouselAutoplayOptions | boolean | '';\n  @Input() vtsController?: VtsCarouselControllerOptions;\n  @Input() vtsThumbs?: VtsCarouselThumbsOptions;\n  @Input() vtsEffect?: VtsCarouselOptions['effect'] = 'slide';\n\n  @Input() class: string = '';\n  @Input() id: string = '';\n  @Input()\n  set vtsNavigation(val) {\n    const currentNext =\n      typeof this._vtsNavigation !== 'boolean' && this._vtsNavigation !== ''\n        ? this._vtsNavigation?.nextEl\n        : null;\n    const currentPrev =\n      typeof this._vtsNavigation !== 'boolean' && this._vtsNavigation !== ''\n        ? this._vtsNavigation?.prevEl\n        : null;\n\n    const newVal: typeof this._vtsNavigation = setProperty(val, {\n      enabled: true,\n      nextEl: currentNext || null,\n      prevEl: currentPrev || null\n    }) as VtsCarouselNavigationOptions;\n\n    // Set default\n    newVal.nextEl = newVal.nextEl || this._nextElRef?.nativeElement;\n    newVal.prevEl = newVal.prevEl || this._prevElRef?.nativeElement;\n\n    this._vtsNavigation = newVal;\n\n    this.showNextNavigation = !(\n      coerceBooleanProperty(val) !== true ||\n      (this._vtsNavigation &&\n        typeof this._vtsNavigation !== 'boolean' &&\n        this._vtsNavigation.nextEl !== null &&\n        this._vtsNavigation.nextEl !== this._nextElRef?.nativeElement &&\n        (typeof this._vtsNavigation.nextEl === 'string' ||\n          typeof this._vtsNavigation.nextEl === 'object'))\n    );\n\n    this.showPrevNavigation = !(\n      coerceBooleanProperty(val) !== true ||\n      (this._vtsNavigation &&\n        typeof this._vtsNavigation !== 'boolean' &&\n        this._vtsNavigation.prevEl !== null &&\n        this._vtsNavigation.prevEl !== this._prevElRef?.nativeElement &&\n        (typeof this._vtsNavigation.prevEl === 'string' ||\n          typeof this._vtsNavigation.prevEl === 'object'))\n    );\n  }\n  get vtsNavigation() {\n    return this._vtsNavigation;\n  }\n  private _vtsNavigation: VtsCarouselNavigationOptions | boolean | '';\n  showNextNavigation: boolean = true;\n  showPrevNavigation: boolean = true;\n\n  // #region \"Pagination\"\n\n  _paginationElRef!: ElementRef;\n  _useCustomPagination: boolean = false;\n\n  // Default pagination\n  @ViewChild('vtsPaginationElRef', { static: false, read: ElementRef })\n  set paginationElRef(el: ElementRef) {\n    this._paginationElRef = el;\n    this._setElement(el, this.vtsPagination, 'vtsPagination');\n  }\n\n  // Custom pagination\n  @ContentChild(VtsCarouselPaginationComponent, { static: false })\n  set customPaginationRef(custom: VtsCarouselPaginationComponent) {\n    if (custom) {\n      this._useCustomPagination = true;\n      this._paginationElRef = custom.elementRef;\n      this._setElement(custom.elementRef, this.vtsPagination, 'vtsPagination');\n    }\n  }\n\n  @Input()\n  set vtsPagination(val) {\n    const current = this._paginationElRef;\n    this._vtsPagination = setProperty(val, {\n      enabled: true,\n      el: current || null\n    });\n    if (typeof this._vtsPagination === 'object') {\n      this._vtsPagination.type = this._useCustomPagination ? 'custom' : 'bullets';\n    }\n    this.showPagination = !(\n      coerceBooleanProperty(this._vtsPagination) !== true ||\n      (typeof this._vtsPagination === 'object' && this._vtsPagination.enabled === false)\n    );\n    if (current) {\n      this._setElement(current, this.vtsPagination, 'vtsPagination');\n    }\n  }\n  get vtsPagination() {\n    return this._vtsPagination;\n  }\n  private _vtsPagination: VtsCarouselPaginationOptions | boolean | '';\n  showPagination: boolean = true;\n  //#endregion\n\n  @Input()\n  set vtsScrollbar(val) {\n    const current =\n      typeof this._vtsScrollbar !== 'boolean' && this._vtsScrollbar !== ''\n        ? this._vtsScrollbar?.el\n        : null;\n    this._vtsScrollbar = setProperty(val, {\n      enabled: true,\n      el: current || null\n    });\n    this.showScrollbar = isShowEl(val, this._vtsScrollbar, this._vtsScrollbarElRef);\n  }\n  get vtsScrollbar() {\n    return this._vtsScrollbar;\n  }\n  private _vtsScrollbar: VtsCarouselScrollbarOptions | boolean | '';\n  showScrollbar: boolean = true;\n\n  @Input()\n  set virtual(val) {\n    this._vtsVirtual = setProperty(val, {\n      enabled: true\n    });\n  }\n  get virtual() {\n    return this._vtsVirtual;\n  }\n  private _vtsVirtual: VtsCarouselVirtualOptions | boolean | '';\n\n  @Input()\n  set config(val: VtsCarouselOptions) {\n    this.updateCarousel(val);\n    const { params } = getParams(val);\n    this.setSelfParams(params);\n  }\n\n  //#region Public\n\n  @Output() vtsAfterInit = new EventEmitter<EventsParams['afterInit']>();\n\n  @Output() vtsAutoplayChange = new EventEmitter<EventsParams['autoplay']>();\n\n  @Output() vtsAutoplayStart = new EventEmitter<EventsParams['autoplayStart']>();\n\n  @Output() vtsAutoplayStop = new EventEmitter<EventsParams['autoplayStop']>();\n\n  @Output() vtsAutoplayPause = new EventEmitter<EventsParams['autoplayPause']>();\n\n  @Output() vtsAutoplayResume = new EventEmitter<EventsParams['autoplayResume']>();\n\n  @Output() vtsBeforeDestroy = new EventEmitter<EventsParams['beforeDestroy']>();\n\n  @Output() vtsBeforeInit = new EventEmitter<EventsParams['beforeInit']>();\n\n  @Output() vtsBeforeLoopFix = new EventEmitter<EventsParams['beforeLoopFix']>();\n\n  @Output() vtsBeforeResize = new EventEmitter<EventsParams['beforeResize']>();\n\n  @Output() vtsBeforeSlideChangeStart = new EventEmitter<EventsParams['beforeSlideChangeStart']>();\n\n  @Output() vtsBeforeTransitionStart = new EventEmitter<EventsParams['beforeTransitionStart']>();\n\n  @Output() vtsBreakpoint = new EventEmitter<EventsParams['breakpoint']>();\n\n  @Output() vtsChangeDirection = new EventEmitter<EventsParams['changeDirection']>();\n\n  @Output() vtsClick = new EventEmitter<EventsParams['click']>();\n\n  @Output() vtsDoubleTap = new EventEmitter<EventsParams['doubleTap']>();\n\n  @Output() vtsDoubleClick = new EventEmitter<EventsParams['doubleClick']>();\n\n  @Output() vtsDestroy = new EventEmitter<EventsParams['destroy']>();\n\n  @Output() vtsFromEdge = new EventEmitter<EventsParams['fromEdge']>();\n\n  @Output() vtsHashChange = new EventEmitter<EventsParams['hashChange']>();\n\n  @Output() vtsHashSet = new EventEmitter<EventsParams['hashSet']>();\n\n  @Output() vtsImagesReady = new EventEmitter<EventsParams['imagesReady']>();\n\n  @Output() vtsInited = new EventEmitter<EventsParams['init']>();\n\n  @Output() vtsKeyPress = new EventEmitter<EventsParams['keyPress']>();\n\n  @Output() vtsLazyImageLoad = new EventEmitter<EventsParams['lazyImageLoad']>();\n\n  @Output() vtsLazyImageReady = new EventEmitter<EventsParams['lazyImageReady']>();\n\n  @Output() vtsLoopFix = new EventEmitter<EventsParams['loopFix']>();\n\n  @Output() vtsMomentumBounce = new EventEmitter<EventsParams['momentumBounce']>();\n\n  @Output() vtsNavigationHide = new EventEmitter<EventsParams['navigationHide']>();\n\n  @Output() vtsNavigationShow = new EventEmitter<EventsParams['navigationShow']>();\n\n  @Output() vtsNavigationPrev = new EventEmitter<EventsParams['navigationPrev']>();\n\n  @Output() vtsNavigationNext = new EventEmitter<EventsParams['navigationNext']>();\n\n  @Output() vtsObserverUpdate = new EventEmitter<EventsParams['observerUpdate']>();\n\n  @Output() vtsOrientationchange = new EventEmitter<EventsParams['orientationchange']>();\n\n  @Output() vtsPaginationHide = new EventEmitter<EventsParams['paginationHide']>();\n\n  @Output() vtsPaginationRender = new EventEmitter<EventsParams['paginationRender']>();\n\n  @Output() vtsPaginationShow = new EventEmitter<EventsParams['paginationShow']>();\n\n  @Output() vtsPaginationUpdate = new EventEmitter<EventsParams['paginationUpdate']>();\n\n  @Output() vtsProgress = new EventEmitter<EventsParams['progress']>();\n\n  @Output() vtsReachBeginning = new EventEmitter<EventsParams['reachBeginning']>();\n\n  @Output() vtsReachEnd = new EventEmitter<EventsParams['reachEnd']>();\n\n  @Output() vtsResize = new EventEmitter<EventsParams['resize']>();\n\n  @Output() vtsScroll = new EventEmitter<EventsParams['scroll']>();\n\n  @Output() vtsScrollbarDragEnd = new EventEmitter<EventsParams['scrollbarDragEnd']>();\n\n  @Output() vtsScrollbarDragMove = new EventEmitter<EventsParams['scrollbarDragMove']>();\n\n  @Output() vtsScrollbarDragStart = new EventEmitter<EventsParams['scrollbarDragStart']>();\n\n  @Output() vtsSetTransition = new EventEmitter<EventsParams['setTransition']>();\n\n  @Output() vtsSetTranslate = new EventEmitter<EventsParams['setTranslate']>();\n\n  @Output() vtsSlideChange = new EventEmitter<EventsParams['slideChange']>();\n\n  @Output() vtsSlideChangeTransitionEnd = new EventEmitter<\n    EventsParams['slideChangeTransitionEnd']\n  >();\n\n  @Output() vtsSlideChangeTransitionStart = new EventEmitter<\n    EventsParams['slideChangeTransitionStart']\n  >();\n\n  @Output() vtsSlideNextTransitionEnd = new EventEmitter<EventsParams['slideNextTransitionEnd']>();\n\n  @Output() vtsSlideNextTransitionStart = new EventEmitter<\n    EventsParams['slideNextTransitionStart']\n  >();\n\n  @Output() vtsSlidePrevTransitionEnd = new EventEmitter<EventsParams['slidePrevTransitionEnd']>();\n\n  @Output() vtsSlidePrevTransitionStart = new EventEmitter<\n    EventsParams['slidePrevTransitionStart']\n  >();\n\n  @Output() vtsSlideResetTransitionStart = new EventEmitter<\n    EventsParams['slideResetTransitionStart']\n  >();\n\n  @Output() vtsSlideResetTransitionEnd = new EventEmitter<\n    EventsParams['slideResetTransitionEnd']\n  >();\n\n  @Output() vtsSliderMove = new EventEmitter<EventsParams['sliderMove']>();\n\n  @Output() sliderFirstMove = new EventEmitter<EventsParams['sliderFirstMove']>();\n\n  @Output() vtsSlidesGridLengthChange = new EventEmitter<EventsParams['slidesGridLengthChange']>();\n\n  @Output() vtsSnapGridLengthChange = new EventEmitter<EventsParams['snapGridLengthChange']>();\n\n  @Output() vtsSnapIndexChange = new EventEmitter<EventsParams['snapIndexChange']>();\n\n  @Output() vtsTap = new EventEmitter<EventsParams['tap']>();\n\n  @Output() vtsToEdge = new EventEmitter<EventsParams['toEdge']>();\n\n  @Output() vtsTouchEnd = new EventEmitter<EventsParams['touchEnd']>();\n\n  @Output() vtsTouchMove = new EventEmitter<EventsParams['touchMove']>();\n\n  @Output() vtsTouchMoveOpposite = new EventEmitter<EventsParams['touchMoveOpposite']>();\n\n  @Output() vtsTouchStart = new EventEmitter<EventsParams['touchStart']>();\n\n  @Output() vtsTransitionEnd = new EventEmitter<EventsParams['transitionEnd']>();\n\n  @Output() vtsTransitionStart = new EventEmitter<EventsParams['transitionStart']>();\n\n  @Output() vtsUpdate = new EventEmitter<EventsParams['update']>();\n\n  @Output() vtsZoomChange = new EventEmitter<EventsParams['zoomChange']>();\n\n  @Output() vtsCarousel = new EventEmitter<any>();\n\n  @Output() vtsLock = new EventEmitter<EventsParams['lock']>();\n\n  @Output() vtsUnlock = new EventEmitter<EventsParams['unlock']>();\n\n  @Output() vtsActiveIndexChange = new EventEmitter<number>();\n\n  @Output() vtsSlidesLengthChange = new EventEmitter<number>();\n\n  // vtsActiveIndexChange emit real index instead of this\n  // @Output() vtsRealIndexChange = new EventEmitter<number>();\n\n  // Public properties\n\n  //#endregion\n\n  @ViewChild('vtsPrevElRef', { static: false })\n  set prevElRef(el: ElementRef) {\n    this._prevElRef = el;\n    this._setElement(el, this.vtsNavigation, 'vtsNavigation', 'prevEl');\n  }\n  _prevElRef!: ElementRef;\n  @ViewChild('vtsNextElRef', { static: false })\n  set nextElRef(el: ElementRef) {\n    this._nextElRef = el;\n    this._setElement(el, this.vtsNavigation, 'vtsNavigation', 'nextEl');\n  }\n  _nextElRef!: ElementRef;\n  @ViewChild('vtsScrollbarElRef', { static: false })\n  set scrollbarElRef(el: ElementRef) {\n    this._vtsScrollbarElRef = el;\n    this._setElement(el, this.vtsScrollbar, 'vtsScrollbar');\n  }\n  _vtsScrollbarElRef!: ElementRef;\n\n  @ContentChildren(VtsCarouselSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n  slidesEl!: QueryList<VtsCarouselSlideDirective>;\n  private slides!: VtsCarouselSlideDirective[];\n\n  prependSlides!: Observable<VtsCarouselSlideDirective[]>;\n  appendSlides!: Observable<VtsCarouselSlideDirective[]>;\n\n  carouselRef?: ICarousel;\n  readonly _activeSlides = new Subject<VtsCarouselSlideDirective[]>();\n\n  get activeSlides() {\n    if (this.virtual) {\n      return this._activeSlides;\n    }\n    return of(this.slides);\n  }\n\n  get zoomContainerClass() {\n    return 'vts-carousel-zoom-container';\n  }\n\n  @HostBinding('class') containerClasses: string = 'vts-carousel';\n  constructor(\n    private _ngZone: NgZone,\n    private elementRef: ElementRef,\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Inject(PLATFORM_ID) private _platformId: Object,\n    private vtsDestroyService: VtsDestroyService\n  ) {\n    this._vtsPagination = false;\n    this._vtsNavigation = false;\n    this._vtsScrollbar = false;\n    this._vtsVirtual = false;\n  }\n\n  private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n    if (!ref || !el) return;\n    if (el.nativeElement) {\n      if (ref[key] === el.nativeElement) {\n        return;\n      }\n      ref[key] = el.nativeElement;\n    }\n    const updateObj: { [key: string]: boolean } = {};\n    updateObj[update] = true;\n    this.updateInitCarousel(updateObj);\n  }\n\n  ngOnInit(): void {\n    const { params } = getParams(this);\n    this.setSelfParams(params);\n  }\n\n  ngAfterViewInit() {\n    this.childrenSlidesInit();\n    this.initCarousel();\n    this._changeDetectorRef.detectChanges();\n    setTimeout(() => {\n      this.vtsCarousel.emit(this.carouselRef);\n    });\n  }\n\n  private setSelfParams(params: any) {\n    Object.keys(params).forEach(k => {\n      const selfKey = `vts${upperFirst(k)}`;\n      //@ts-ignore\n      this[selfKey] = params[k];\n    });\n  }\n\n  private childrenSlidesInit() {\n    this.slidesChanges(this.slidesEl);\n    this.slidesEl.changes.pipe(takeUntil(this.vtsDestroyService)).subscribe(this.slidesChanges);\n  }\n\n  private slidesChanges = (val: QueryList<VtsCarouselSlideDirective>) => {\n    this.slides = val.map((slide: VtsCarouselSlideDirective, index: number) => {\n      slide.slideIndex = index;\n      slide.classNames = this.vtsSlideClass || '';\n      return slide;\n    });\n    if (this.vtsLoop && !this.vtsLoopedSlides) {\n      this.calcLoopedSlides();\n    }\n    if (!this.virtual) {\n      if (this.vtsLoopedSlides) {\n        this.prependSlides = of(this.slides.slice(this.slides.length - this.vtsLoopedSlides));\n        this.appendSlides = of(this.slides.slice(0, this.vtsLoopedSlides));\n      }\n    } else if (this.carouselRef && this.carouselRef.hasOwnProperty('virtual')) {\n      this._ngZone.runOutsideAngular(() => {\n        this.carouselRef!.virtual.slides = this.slides;\n        this.carouselRef!.virtual.update(true);\n      });\n    }\n\n    this._changeDetectorRef.detectChanges();\n    this._ngZone.runOutsideAngular(() => {\n      this.carouselRef?.update();\n    });\n  };\n\n  get isCarouselActive() {\n    return this.carouselRef && !this.carouselRef.destroyed;\n  }\n\n  initCarousel() {\n    // const { params: carouselParams, passedParams } = getParams(this);\n    const { params: carouselParams } = getParams(this);\n    this.setSelfParams(carouselParams);\n    this._ngZone.runOutsideAngular(() => {\n      carouselParams.init = false;\n      if (!carouselParams.virtual) {\n        carouselParams.observer = true;\n      }\n\n      carouselParams.onAny = (eventName: keyof VtsCarouselComponent, ...args: any[]) => {\n        const emitter = this[\n          ('vts' + upperFirst(eventName)) as keyof VtsCarouselComponent\n        ] as EventEmitter<any>;\n        if (emitter) {\n          if (!(emitter instanceof EventEmitter)) return;\n          if (Object.keys(EventMappers).includes(eventName)) {\n            emitter.emit(EventMappers[eventName as keyof typeof EventMappers](args as any));\n          } else emitter.emit([...args]);\n        }\n      };\n      const _slideClasses: VtsCarouselEvents['_slideClasses'] = (_, updated) => {\n        updated.forEach(({ slideEl, classNames }, index) => {\n          const dataIndex = slideEl.getAttribute('data-carousel-slide-index');\n          const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n          if (this.virtual) {\n            const virtualSlide = this.slides.find(item => {\n              return item.virtualIndex && item.virtualIndex === slideIndex;\n            });\n            if (virtualSlide) {\n              virtualSlide.classNames = classNames;\n              return;\n            }\n          }\n\n          if (this.slides[slideIndex]) {\n            this.slides[slideIndex].classNames = classNames;\n          }\n        });\n        this._changeDetectorRef.detectChanges();\n      };\n      const _containerClasses: VtsCarouselEvents['_containerClasses'] = (_, classes) => {\n        setTimeout(() => {\n          this.containerClasses = classes;\n        });\n      };\n      Object.assign(carouselParams.on, {\n        _containerClasses,\n        _slideClasses\n      });\n      const carouselRef = new Carousel(carouselParams) as any as ICarousel;\n      if (carouselParams.vtsLoop) {\n        carouselRef.vtsLoopedSlides = this.vtsLoopedSlides!;\n      }\n      const isVirtualEnabled = isEnabled(carouselRef.params.virtual!);\n      if (carouselRef.virtual && isVirtualEnabled) {\n        carouselRef.virtual.slides = this.slides;\n        const extendWith = {\n          cache: false,\n          slides: this.slides,\n          renderExternal: this.updateVirtualSlides,\n          renderExternalUpdate: false\n        };\n        extend(carouselRef.params.virtual, extendWith);\n        extend(carouselRef.originalParams.virtual, extendWith);\n      }\n\n      if (isPlatformBrowser(this._platformId)) {\n        this.carouselRef = carouselRef.init(this.elementRef.nativeElement) as any as ICarousel;\n        const isVirtualEnabled = isEnabled(this.carouselRef?.params.virtual!);\n        if (this.carouselRef?.virtual && isVirtualEnabled) {\n          this.carouselRef.virtual.update(true);\n        }\n        this._changeDetectorRef.detectChanges();\n      }\n    });\n  }\n\n  style: any = null;\n  currentVirtualData: any; // TODO: type virtualData;\n  private updateVirtualSlides = (virtualData: any) => {\n    // TODO: type virtualData\n    if (\n      !this.carouselRef ||\n      (this.currentVirtualData &&\n        this.currentVirtualData.from === virtualData.from &&\n        this.currentVirtualData.to === virtualData.to &&\n        this.currentVirtualData.offset === virtualData.offset)\n    ) {\n      return;\n    }\n    this.style = this.carouselRef.isHorizontal()\n      ? {\n          [this.carouselRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n        }\n      : {\n          top: `${virtualData.offset}px`\n        };\n    this.currentVirtualData = virtualData;\n    this._activeSlides.next(virtualData.slides);\n    this._ngZone.run(() => {\n      this._changeDetectorRef.detectChanges();\n    });\n    this._ngZone.runOutsideAngular(() => {\n      this.carouselRef!.updateSlides();\n      this.carouselRef!.updateProgress();\n      this.carouselRef!.updateSlidesClasses();\n      if (isEnabled(this.carouselRef!.params.lazy!)) {\n        this.carouselRef!.lazy.load();\n      }\n      this.carouselRef!.virtual.update(true);\n    });\n    return;\n  };\n\n  ngOnChanges(changedParams: SimpleChanges) {\n    this.updateCarousel(changedParams);\n    this._changeDetectorRef.detectChanges();\n  }\n\n  updateInitCarousel(changedParams: any) {\n    if (!(changedParams && this.carouselRef && !this.carouselRef.destroyed)) {\n      return;\n    }\n\n    this._ngZone.runOutsideAngular(() => {\n      const {\n        // params: currentParams,\n        pagination,\n        navigation,\n        scrollbar,\n        // virtual,\n        thumbs\n      } = this.carouselRef!;\n\n      if (changedParams.vtsPagination) {\n        if (\n          this.vtsPagination &&\n          typeof this.vtsPagination !== 'boolean' &&\n          this.vtsPagination.el &&\n          pagination &&\n          !pagination.el\n        ) {\n          this.updateParameter('vtsPagination', this.vtsPagination);\n          pagination.init();\n          pagination.render();\n          pagination.update();\n        } else {\n          pagination.destroy();\n          // pagination.el = null;\n        }\n      }\n\n      if (changedParams.vtsScrollbar) {\n        if (\n          this.vtsScrollbar &&\n          typeof this.vtsScrollbar !== 'boolean' &&\n          this.vtsScrollbar.el &&\n          scrollbar &&\n          !scrollbar.el\n        ) {\n          this.updateParameter('vtsScrollbar', this.vtsScrollbar);\n          scrollbar.init();\n          scrollbar.updateSize();\n          scrollbar.setTranslate();\n        } else {\n          scrollbar.destroy();\n          // scrollbar.el = null;\n        }\n      }\n\n      if (changedParams.vtsNavigation) {\n        if (\n          this.vtsNavigation &&\n          typeof this.vtsNavigation !== 'boolean' &&\n          this.vtsNavigation.prevEl &&\n          this.vtsNavigation.nextEl &&\n          navigation &&\n          !navigation.prevEl &&\n          !navigation.nextEl\n        ) {\n          this.updateParameter('vtsNavigation', this.vtsNavigation);\n          navigation.init();\n          navigation.update();\n        } else if (navigation.prevEl && navigation.nextEl) {\n          navigation.destroy();\n          // navigation.nextEl = null;\n          // navigation.prevEl = null;\n        }\n      }\n      if (changedParams.vtsThumbs && this.vtsThumbs && this.vtsThumbs.carousel) {\n        this.updateParameter('vtsThumbs', this.vtsThumbs);\n        const initialized = thumbs.init();\n        if (initialized) thumbs.update(true);\n      }\n\n      if (changedParams.vtsController && this.vtsController && this.vtsController.control) {\n        this.carouselRef!.controller.control = this.vtsController.control;\n      }\n\n      this.carouselRef!.update();\n    });\n  }\n\n  updateCarousel(changedParams: SimpleChanges | any) {\n    this._ngZone.runOutsideAngular(() => {\n      if (changedParams.config) {\n        return;\n      }\n      if (!(changedParams && this.carouselRef && !this.carouselRef.destroyed)) {\n        return;\n      }\n      for (const key in changedParams) {\n        if (ignoreNgOnChanges.indexOf(key) >= 0) {\n          continue;\n        }\n        const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n        this.updateParameter(key, newValue);\n      }\n\n      if (changedParams.vtsAllowSlideNext) {\n        this.carouselRef.vtsAllowSlideNext = this.vtsAllowSlideNext ? true : false;\n      }\n      if (changedParams.vtsAllowSlidePrev) {\n        this.carouselRef.vtsAllowSlidePrev = this.vtsAllowSlidePrev ? true : false;\n      }\n      if (changedParams.vtsDirection) {\n        this.carouselRef.changeDirection(this.vtsDirection, false);\n      }\n      if (changedParams.vtsBreakpoints) {\n        if (this.vtsLoop && !this.vtsLoopedSlides) {\n          this.calcLoopedSlides();\n        }\n        this.carouselRef.currentBreakpoint = null;\n        this.carouselRef.setBreakpoint();\n      }\n\n      if (changedParams.vtsThumbs || changedParams.vtsController) {\n        this.updateInitCarousel(changedParams);\n      }\n      this.carouselRef.update();\n    });\n  }\n\n  calcLoopedSlides() {\n    if (!this.vtsLoop) {\n      return false;\n    }\n    let vtsSlidesPerViewParams = this.vtsSlidesPerView;\n    if (this.vtsBreakpoints) {\n      const breakpoint = Carousel.prototype.getBreakpoint(this.vtsBreakpoints) as VtsSafeAny;\n      const breakpointOnlyParams =\n        breakpoint in this.vtsBreakpoints ? this.vtsBreakpoints[breakpoint] : undefined;\n      if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n        vtsSlidesPerViewParams = breakpointOnlyParams.slidesPerView;\n      }\n    }\n    if (vtsSlidesPerViewParams === 'auto') {\n      this.vtsLoopedSlides = this.slides.length;\n      return this.slides.length;\n    }\n    let vtsLoopedSlides = this.vtsLoopedSlides || vtsSlidesPerViewParams;\n    if (!vtsLoopedSlides) {\n      // ?\n      return false;\n    }\n\n    if (this.vtsLoopAdditionalSlides) {\n      vtsLoopedSlides += this.vtsLoopAdditionalSlides;\n    }\n    if (vtsLoopedSlides > this.slides.length) {\n      vtsLoopedSlides = this.slides.length;\n    }\n    this.vtsLoopedSlides = vtsLoopedSlides;\n    return true;\n  }\n\n  updateParameter(key: string, value: any) {\n    if (!(this.carouselRef && !this.carouselRef.destroyed)) {\n      return;\n    }\n    const _key = camelCase(key.replace(/^_/, '').replace(/^vts/, '')) as keyof VtsCarouselOptions;\n    const isCurrentParamObj = isObject(this.carouselRef.params[_key]);\n\n    if (_key === 'enabled') {\n      if (value === true) {\n        this.carouselRef.enable();\n      } else if (value === false) {\n        this.carouselRef.disable();\n      }\n      return;\n    }\n    if (isCurrentParamObj && isObject(value)) {\n      extend(this.carouselRef.params[_key], value);\n    } else {\n      (this.carouselRef.params[_key] as any) = value;\n    }\n  }\n\n  ngOnDestroy() {\n    this._ngZone.runOutsideAngular(() => {\n      this.carouselRef?.destroy(true, false);\n    });\n  }\n}\n\ntype OmitPaginationOptions = Omit<VtsCarouselPaginationOptions, 'el' | 'renderCustom' | 'type'> & {\n  /**\n   * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'`\n   *\n   * @default 'bullets'\n   */\n  type?: 'bullets' | 'fraction' | 'progressbar';\n};\ntype VtsCarouselBreakpointOptions = {\n  [width: number]: VtsCarouselOptions;\n  [ratio: string]: VtsCarouselOptions;\n};\n\nexport {\n  VtsCarouselOptions,\n  VtsCarouselEvents,\n  VtsCarouselNavigationOptions,\n  OmitPaginationOptions as VtsCarouselPaginationOptions,\n  VtsCarouselScrollbarOptions,\n  VtsCarouselVirtualOptions,\n  VtsCarouselControllerOptions,\n  VtsCarouselThumbsOptions,\n  VtsCarouselAutoplayOptions,\n  VtsCarouselBreakpointOptions\n};\n","<ng-content select=\"[slot=container-start]\"></ng-content>\n<ng-container *ngIf=\"vtsNavigation && showPrevNavigation\">\n  <div class=\"vts-carousel-button-prev\" #vtsPrevElRef>\n    <svg class=\"vts-carousel-button-ico\" width=\"17\" height=\"30\" viewBox=\"0 0 17 30\" fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M15.93 1.485a1.875 1.875 0 0 0-2.655 0L.81 13.95a1.494 1.494 0 0 0 0 2.115L13.275 28.53c.735.735 1.92.735 2.655 0a1.874 1.874 0 0 0 0-2.655L5.07 15 15.945 4.125c.72-.72.72-1.92-.015-2.64Z\"\n        fill=\"currentColor\" />\n    </svg>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"vtsNavigation && showNextNavigation\">\n  <div class=\"vts-carousel-button-next\" #vtsNextElRef>\n    <svg class=\"vts-carousel-button-ico\" width=\"17\" height=\"30\" viewBox=\"0 0 17 30\" fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M1.07 28.515c.735.735 1.92.735 2.655 0L16.19 16.05a1.495 1.495 0 0 0 0-2.115L3.725 1.47a1.874 1.874 0 0 0-2.655 0 1.874 1.874 0 0 0 0 2.655L11.93 15 1.055 25.875c-.72.72-.72 1.92.015 2.64Z\"\n        fill=\"currentColor\" />\n    </svg>\n  </div>\n</ng-container>\n<div *ngIf=\"vtsScrollbar && showScrollbar\" class=\"vts-carousel-scrollbar\" #vtsScrollbarElRef></div>\n<ng-container *ngIf=\"vtsPagination && showPagination\">\n  <ng-container *ngIf=\"_useCustomPagination; else defaultPagination\">\n    <ng-content select=\"vts-carousel-pagination\"></ng-content>\n  </ng-container>\n  <ng-template #defaultPagination>\n    <div class=\"vts-carousel-pagination\" #vtsPaginationElRef></div>\n  </ng-template>\n</ng-container>\n\n<div [ngClass]=\"vtsWrapperClass\" [attr.id]=\"id\">\n  <ng-content select=\"[slot=wrapper-start]\"></ng-content>\n  <ng-template *ngTemplateOutlet=\"\n        slidesTemplate;\n        context: {\n          loopSlides: prependSlides,\n          key: 'prepend'\n        }\n      \"></ng-template>\n  <ng-template *ngTemplateOutlet=\"\n        slidesTemplate;\n        context: {\n          loopSlides: activeSlides,\n          key: ''\n        }\n      \"></ng-template>\n  <ng-template *ngTemplateOutlet=\"\n        slidesTemplate;\n        context: {\n          loopSlides: appendSlides,\n          key: 'append'\n        }\n      \"></ng-template>\n  <ng-content select=\"[slot=wrapper-end]\"></ng-content>\n</div>\n<ng-content select=\"[slot=container-end]\"></ng-content>\n\n<ng-template #slidesTemplate let-loopSlides=\"loopSlides\" let-slideKey=\"key\">\n  <div *ngFor=\"let slide of loopSlides | async\" [ngClass]=\"\n        (slide.class ? slide.class + ' ' : '') +\n        vtsSlideClass +\n        (slideKey !== '' ? ' ' + vtsSlideDuplicateClass : '')\n      \" [attr.data-carousel-slide-index]=\"slide.virtualIndex ? slide.virtualIndex : slide.slideIndex\"\n    [attr.data-carousel-autoplay]=\"slide.autoplayDelay\" [style]=\"style\" [ngSwitch]=\"slide.zoom\">\n    <div *ngSwitchCase=\"true\" [ngClass]=\"zoomContainerClass\">\n      <ng-template [ngTemplateOutlet]=\"slide.template\" [ngTemplateOutletContext]=\"{\n            $implicit: slide.slideData\n          }\"></ng-template>\n    </div>\n    <ng-container *ngSwitchDefault>\n      <ng-template [ngTemplateOutlet]=\"slide.template\" [ngTemplateOutletContext]=\"{\n            $implicit: slide.slideData\n          }\"></ng-template>\n    </ng-container>\n  </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { VtsCarouselComponent } from './carousel.component';\nimport { VtsCarouselSlideDirective } from './carousel-slide.directive';\nimport { VtsCarouselPaginationComponent } from './carousel-pagination.component';\n@NgModule({\n  declarations: [VtsCarouselComponent, VtsCarouselSlideDirective, VtsCarouselPaginationComponent],\n  exports: [VtsCarouselComponent, VtsCarouselSlideDirective, VtsCarouselPaginationComponent],\n  imports: [BidiModule, CommonModule, PlatformModule]\n})\nexport class VtsCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["transition","transitionEnd","getComputedStyle","isObject","extend","getTranslate","events","checkOverflow","Hashnavigation","Thumbs","Freemode","Effectfade","Effectcube","Effectflip"],"mappings":"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"}