{"version":3,"file":"vts-voffice-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/vts-voffice-ng-vts-carousel.ts"],"sourcesContent":["//@ts-nocheck\r\nimport {\r\n  $,\r\n  addClass,\r\n  removeClass,\r\n  hasClass,\r\n  toggleClass,\r\n  attr,\r\n  removeAttr,\r\n  transform,\r\n  transition,\r\n  on,\r\n  off,\r\n  trigger,\r\n  transitionEnd,\r\n  outerWidth,\r\n  outerHeight,\r\n  styles,\r\n  offset,\r\n  css,\r\n  each,\r\n  html,\r\n  text,\r\n  is,\r\n  index,\r\n  eq,\r\n  append,\r\n  prepend,\r\n  next,\r\n  nextAll,\r\n  prev,\r\n  prevAll,\r\n  parent,\r\n  parents,\r\n  closest,\r\n  find,\r\n  children,\r\n  filter,\r\n  remove\r\n} from 'dom7';\r\n\r\nconst Methods = {\r\n  addClass,\r\n  removeClass,\r\n  hasClass,\r\n  toggleClass,\r\n  attr,\r\n  removeAttr,\r\n  transform,\r\n  transition,\r\n  on,\r\n  off,\r\n  trigger,\r\n  transitionEnd,\r\n  outerWidth,\r\n  outerHeight,\r\n  styles,\r\n  offset,\r\n  css,\r\n  each,\r\n  html,\r\n  text,\r\n  is,\r\n  index,\r\n  eq,\r\n  append,\r\n  prepend,\r\n  next,\r\n  nextAll,\r\n  prev,\r\n  prevAll,\r\n  parent,\r\n  parents,\r\n  closest,\r\n  find,\r\n  children,\r\n  filter,\r\n  remove\r\n};\r\n\r\nObject.keys(Methods).forEach(methodName => {\r\n  Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\r\n});\r\n\r\nexport default $;\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nfunction deleteProps(obj) {\r\n  const object = obj;\r\n  Object.keys(object).forEach(key => {\r\n    try {\r\n      object[key] = null;\r\n    } catch (e) {\r\n      // no getter for object\r\n    }\r\n    try {\r\n      delete object[key];\r\n    } catch (e) {\r\n      // something got wrong\r\n    }\r\n  });\r\n}\r\nfunction nextTick(callback, delay = 0) {\r\n  return setTimeout(callback, delay);\r\n}\r\nfunction now() {\r\n  return Date.now();\r\n}\r\nfunction getComputedStyle(el) {\r\n  const window = getWindow();\r\n  let style;\r\n  if (window.getComputedStyle) {\r\n    style = window.getComputedStyle(el, null);\r\n  }\r\n  if (!style && el.currentStyle) {\r\n    style = el.currentStyle;\r\n  }\r\n  if (!style) {\r\n    style = el.style;\r\n  }\r\n\r\n  return style;\r\n}\r\nfunction getTranslate(el, axis = 'x') {\r\n  const window = getWindow();\r\n  let matrix;\r\n  let curTransform;\r\n  let transformMatrix;\r\n\r\n  const curStyle = getComputedStyle(el, null);\r\n\r\n  if (window.WebKitCSSMatrix) {\r\n    curTransform = curStyle.transform || curStyle.webkitTransform;\r\n    if (curTransform.split(',').length > 6) {\r\n      curTransform = curTransform\r\n        .split(', ')\r\n        .map(a => a.replace(',', '.'))\r\n        .join(', ');\r\n    }\r\n    // Some old versions of Webkit choke when 'none' is passed; pass\r\n    // empty string instead in this case\r\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\r\n  } else {\r\n    transformMatrix =\r\n      curStyle.MozTransform ||\r\n      curStyle.OTransform ||\r\n      curStyle.MsTransform ||\r\n      curStyle.msTransform ||\r\n      curStyle.transform ||\r\n      curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\r\n    matrix = transformMatrix.toString().split(',');\r\n  }\r\n\r\n  if (axis === 'x') {\r\n    // Latest Chrome and webkits Fix\r\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\r\n    // Crazy IE10 Matrix\r\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\r\n    // Normal Browsers\r\n    else curTransform = parseFloat(matrix[4]);\r\n  }\r\n  if (axis === 'y') {\r\n    // Latest Chrome and webkits Fix\r\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\r\n    // Crazy IE10 Matrix\r\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\r\n    // Normal Browsers\r\n    else curTransform = parseFloat(matrix[5]);\r\n  }\r\n  return curTransform || 0;\r\n}\r\nfunction isObject(o) {\r\n  return (\r\n    typeof o === 'object' &&\r\n    o !== null &&\r\n    o.constructor &&\r\n    Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n  );\r\n}\r\nfunction isNode(node) {\r\n  // eslint-disable-next-line\r\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\r\n    return node instanceof HTMLElement;\r\n  }\r\n  return node && (node.nodeType === 1 || node.nodeType === 11);\r\n}\r\nfunction extend(...args) {\r\n  const to = Object(args[0]);\r\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\r\n  for (let i = 1; i < args.length; i += 1) {\r\n    const nextSource = args[i];\r\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\r\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\r\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\r\n        const nextKey = keysArray[nextIndex];\r\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\r\n        if (desc !== undefined && desc.enumerable) {\r\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\r\n            if (nextSource[nextKey].__carousel__) {\r\n              to[nextKey] = nextSource[nextKey];\r\n            } else {\r\n              extend(to[nextKey], nextSource[nextKey]);\r\n            }\r\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\r\n            to[nextKey] = {};\r\n            if (nextSource[nextKey].__carousel__) {\r\n              to[nextKey] = nextSource[nextKey];\r\n            } else {\r\n              extend(to[nextKey], nextSource[nextKey]);\r\n            }\r\n          } else {\r\n            to[nextKey] = nextSource[nextKey];\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return to;\r\n}\r\n\r\nfunction setCSSProperty(el, varName, varValue) {\r\n  el.style.setProperty(varName, varValue);\r\n}\r\n\r\nfunction animateCSSModeScroll({ carousel, targetPosition, side }) {\r\n  const window = getWindow();\r\n  const startPosition = -carousel.translate;\r\n  let startTime = null;\r\n  let time;\r\n  const duration = carousel.params.speed;\r\n\r\n  carousel.wrapperEl.style.scrollSnapType = 'none';\r\n  window.cancelAnimationFrame(carousel.cssModeFrameID);\r\n\r\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\r\n\r\n  const isOutOfBound = (current, target) => {\r\n    return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\r\n  };\r\n\r\n  const animate = () => {\r\n    time = new Date().getTime();\r\n    if (startTime === null) {\r\n      startTime = time;\r\n    }\r\n\r\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\r\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\r\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\r\n\r\n    if (isOutOfBound(currentPosition, targetPosition)) {\r\n      currentPosition = targetPosition;\r\n    }\r\n    carousel.wrapperEl.scrollTo({\r\n      [side]: currentPosition\r\n    });\r\n    if (isOutOfBound(currentPosition, targetPosition)) {\r\n      carousel.wrapperEl.style.overflow = 'hidden';\r\n      carousel.wrapperEl.style.scrollSnapType = '';\r\n      setTimeout(() => {\r\n        carousel.wrapperEl.style.overflow = '';\r\n        carousel.wrapperEl.scrollTo({\r\n          [side]: currentPosition\r\n        });\r\n      });\r\n      window.cancelAnimationFrame(carousel.cssModeFrameID);\r\n      return;\r\n    }\r\n    carousel.cssModeFrameID = window.requestAnimationFrame(animate);\r\n  };\r\n  animate();\r\n}\r\n\r\nexport {\r\n  animateCSSModeScroll,\r\n  deleteProps,\r\n  nextTick,\r\n  now,\r\n  getTranslate,\r\n  isObject,\r\n  extend,\r\n  getComputedStyle,\r\n  setCSSProperty\r\n};\r\n","//@ts-nocheck\r\nimport { getWindow, getDocument } from 'ssr-window';\r\n\r\nlet support;\r\n\r\nfunction calcSupport() {\r\n  const window = getWindow();\r\n  const document = getDocument();\r\n\r\n  return {\r\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\r\n\r\n    touch: !!(\r\n      'ontouchstart' in window ||\r\n      (window.DocumentTouch && document instanceof window.DocumentTouch)\r\n    ),\r\n\r\n    passiveListener: (function checkPassiveListener() {\r\n      let supportsPassive = false;\r\n      try {\r\n        const opts = Object.defineProperty({}, 'passive', {\r\n          // eslint-disable-next-line\r\n          get() {\r\n            supportsPassive = true;\r\n          }\r\n        });\r\n        window.addEventListener('testPassiveListener', null, opts);\r\n      } catch (e) {\r\n        // No support\r\n      }\r\n      return supportsPassive;\r\n    })(),\r\n\r\n    gestures: (function checkGestures() {\r\n      return 'ongesturestart' in window;\r\n    })()\r\n  };\r\n}\r\n\r\nfunction getSupport() {\r\n  if (!support) {\r\n    support = calcSupport();\r\n  }\r\n  return support;\r\n}\r\n\r\nexport { getSupport };\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\nimport { getSupport } from './get-support';\r\n\r\nlet deviceCached;\r\n\r\nfunction calcDevice({ userAgent } = {}) {\r\n  const support = getSupport();\r\n  const window = getWindow();\r\n  const platform = window.navigator.platform;\r\n  const ua = userAgent || window.navigator.userAgent;\r\n\r\n  const device = {\r\n    ios: false,\r\n    android: false\r\n  };\r\n\r\n  const screenWidth = window.screen.width;\r\n  const screenHeight = window.screen.height;\r\n\r\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\r\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\r\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\r\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\r\n  const windows = platform === 'Win32';\r\n  let macos = platform === 'MacIntel';\r\n\r\n  // iPadOs 13 fix\r\n  const iPadScreens = [\r\n    '1024x1366',\r\n    '1366x1024',\r\n    '834x1194',\r\n    '1194x834',\r\n    '834x1112',\r\n    '1112x834',\r\n    '768x1024',\r\n    '1024x768',\r\n    '820x1180',\r\n    '1180x820',\r\n    '810x1080',\r\n    '1080x810'\r\n  ];\r\n  if (\r\n    !ipad &&\r\n    macos &&\r\n    support.touch &&\r\n    iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\r\n  ) {\r\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\r\n    if (!ipad) ipad = [0, 1, '13_0_0'];\r\n    macos = false;\r\n  }\r\n\r\n  // Android\r\n  if (android && !windows) {\r\n    device.os = 'android';\r\n    device.android = true;\r\n  }\r\n  if (ipad || iphone || ipod) {\r\n    device.os = 'ios';\r\n    device.ios = true;\r\n  }\r\n\r\n  // Export object\r\n  return device;\r\n}\r\n\r\nfunction getDevice(overrides = {}) {\r\n  if (!deviceCached) {\r\n    deviceCached = calcDevice(overrides);\r\n  }\r\n  return deviceCached;\r\n}\r\n\r\nexport { getDevice };\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nlet browser;\r\n\r\nfunction calcBrowser() {\r\n  const window = getWindow();\r\n  function isSafari() {\r\n    const ua = window.navigator.userAgent.toLowerCase();\r\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\r\n  }\r\n  return {\r\n    isSafari: isSafari(),\r\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\r\n  };\r\n}\r\n\r\nfunction getBrowser() {\r\n  if (!browser) {\r\n    browser = calcBrowser();\r\n  }\r\n  return browser;\r\n}\r\n\r\nexport { getBrowser };\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nexport default function Resize({ carousel, on, emit }) {\r\n  const window = getWindow();\r\n  let observer = null;\r\n  let animationFrame = null;\r\n\r\n  const resizeHandler = () => {\r\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\r\n    emit('beforeResize');\r\n    emit('resize');\r\n  };\r\n\r\n  const createObserver = () => {\r\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\r\n    observer = new ResizeObserver(entries => {\r\n      animationFrame = window.requestAnimationFrame(() => {\r\n        const { width, height } = carousel;\r\n        let newWidth = width;\r\n        let newHeight = height;\r\n        entries.forEach(({ contentBoxSize, contentRect, target }) => {\r\n          if (target && target !== carousel.el) return;\r\n          newWidth = contentRect\r\n            ? contentRect.width\r\n            : (contentBoxSize[0] || contentBoxSize).inlineSize;\r\n          newHeight = contentRect\r\n            ? contentRect.height\r\n            : (contentBoxSize[0] || contentBoxSize).blockSize;\r\n        });\r\n        if (newWidth !== width || newHeight !== height) {\r\n          resizeHandler();\r\n        }\r\n      });\r\n    });\r\n    observer.observe(carousel.el);\r\n  };\r\n\r\n  const removeObserver = () => {\r\n    if (animationFrame) {\r\n      window.cancelAnimationFrame(animationFrame);\r\n    }\r\n    if (observer && observer.unobserve && carousel.el) {\r\n      observer.unobserve(carousel.el);\r\n      observer = null;\r\n    }\r\n  };\r\n\r\n  const orientationChangeHandler = () => {\r\n    if (!carousel || carousel.destroyed || !carousel.initialized) return;\r\n    emit('orientationchange');\r\n  };\r\n\r\n  on('init', () => {\r\n    if (carousel.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\r\n      createObserver();\r\n      return;\r\n    }\r\n    window.addEventListener('resize', resizeHandler);\r\n    window.addEventListener('orientationchange', orientationChangeHandler);\r\n  });\r\n\r\n  on('destroy', () => {\r\n    removeObserver();\r\n    window.removeEventListener('resize', resizeHandler);\r\n    window.removeEventListener('orientationchange', orientationChangeHandler);\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nexport default function Observer({ carousel, extendParams, on, emit }) {\r\n  const observers = [];\r\n  const window = getWindow();\r\n  const attach = (target, options = {}) => {\r\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\r\n    const observer = new ObserverFunc(mutations => {\r\n      // The observerUpdate event should only be triggered\r\n      // once despite the number of mutations.  Additional\r\n      // triggers are redundant and are very costly\r\n      if (mutations.length === 1) {\r\n        emit('observerUpdate', mutations[0]);\r\n        return;\r\n      }\r\n      const observerUpdate = function observerUpdate() {\r\n        emit('observerUpdate', mutations[0]);\r\n      };\r\n\r\n      if (window.requestAnimationFrame) {\r\n        window.requestAnimationFrame(observerUpdate);\r\n      } else {\r\n        window.setTimeout(observerUpdate, 0);\r\n      }\r\n    });\r\n\r\n    observer.observe(target, {\r\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\r\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\r\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\r\n    });\r\n\r\n    observers.push(observer);\r\n  };\r\n  const init = () => {\r\n    if (!carousel.params.observer) return;\r\n    if (carousel.params.observeParents) {\r\n      const containerParents = carousel.$el.parents();\r\n      for (let i = 0; i < containerParents.length; i += 1) {\r\n        attach(containerParents[i]);\r\n      }\r\n    }\r\n    // Observe container\r\n    attach(carousel.$el[0], {\r\n      childList: carousel.params.observeSlideChildren\r\n    });\r\n\r\n    // Observe wrapper\r\n    attach(carousel.$wrapperEl[0], { attributes: false });\r\n  };\r\n  const destroy = () => {\r\n    observers.forEach(observer => {\r\n      observer.disconnect();\r\n    });\r\n    observers.splice(0, observers.length);\r\n  };\r\n\r\n  extendParams({\r\n    observer: false,\r\n    observeParents: false,\r\n    observeSlideChildren: false\r\n  });\r\n  on('init', init);\r\n  on('destroy', destroy);\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-underscore-dangle: \"off\" */\r\n/* eslint no-use-before-define: \"off\" */\r\nimport { getDocument } from 'ssr-window';\r\nimport { nextTick } from '../../../shared/utils';\r\n\r\nexport default function Autoplay({ carousel, extendParams, on, emit }) {\r\n  let timeout;\r\n\r\n  carousel.autoplay = {\r\n    running: false,\r\n    paused: false\r\n  };\r\n\r\n  extendParams({\r\n    autoplay: {\r\n      enabled: false,\r\n      delay: 3000,\r\n      waitForTransition: true,\r\n      disableOnInteraction: true,\r\n      stopOnLastSlide: false,\r\n      reverseDirection: false,\r\n      pauseOnMouseEnter: false\r\n    }\r\n  });\r\n\r\n  function run() {\r\n    if (!carousel.size) {\r\n      carousel.autoplay.running = false;\r\n      carousel.autoplay.paused = false;\r\n      return;\r\n    }\r\n    const $activeSlideEl = carousel.slides.eq(carousel.activeIndex);\r\n    let delay = carousel.params.autoplay.delay;\r\n    if ($activeSlideEl.attr('data-carousel-autoplay')) {\r\n      delay = $activeSlideEl.attr('data-carousel-autoplay') || carousel.params.autoplay.delay;\r\n    }\r\n    clearTimeout(timeout);\r\n    timeout = nextTick(() => {\r\n      let autoplayResult;\r\n      if (carousel.params.autoplay.reverseDirection) {\r\n        if (carousel.params.loop) {\r\n          carousel.loopFix();\r\n          autoplayResult = carousel.slidePrev(carousel.params.speed, true, true);\r\n          emit('autoplay');\r\n        } else if (!carousel.isBeginning) {\r\n          autoplayResult = carousel.slidePrev(carousel.params.speed, true, true);\r\n          emit('autoplay');\r\n        } else if (!carousel.params.autoplay.stopOnLastSlide) {\r\n          autoplayResult = carousel.slideTo(\r\n            carousel.slides.length - 1,\r\n            carousel.params.speed,\r\n            true,\r\n            true\r\n          );\r\n          emit('autoplay');\r\n        } else {\r\n          stop();\r\n        }\r\n      } else if (carousel.params.loop) {\r\n        carousel.loopFix();\r\n        autoplayResult = carousel.slideNext(carousel.params.speed, true, true);\r\n        emit('autoplay');\r\n      } else if (!carousel.isEnd) {\r\n        autoplayResult = carousel.slideNext(carousel.params.speed, true, true);\r\n        emit('autoplay');\r\n      } else if (!carousel.params.autoplay.stopOnLastSlide) {\r\n        autoplayResult = carousel.slideTo(0, carousel.params.speed, true, true);\r\n        emit('autoplay');\r\n      } else {\r\n        stop();\r\n      }\r\n      if (carousel.params.cssMode && carousel.autoplay.running) run();\r\n      else if (autoplayResult === false) {\r\n        run();\r\n      }\r\n    }, delay);\r\n  }\r\n  function start() {\r\n    if (typeof timeout !== 'undefined') return false;\r\n    if (carousel.autoplay.running) return false;\r\n    carousel.autoplay.running = true;\r\n    emit('autoplayStart');\r\n    run();\r\n    return true;\r\n  }\r\n  function stop() {\r\n    if (!carousel.autoplay.running) return false;\r\n    if (typeof timeout === 'undefined') return false;\r\n\r\n    if (timeout) {\r\n      clearTimeout(timeout);\r\n      timeout = undefined;\r\n    }\r\n    carousel.autoplay.running = false;\r\n    emit('autoplayStop');\r\n    return true;\r\n  }\r\n  function pause(speed) {\r\n    if (!carousel.autoplay.running) return;\r\n    if (carousel.autoplay.paused) return;\r\n    if (timeout) clearTimeout(timeout);\r\n    carousel.autoplay.paused = true;\r\n    if (speed === 0 || !carousel.params.autoplay.waitForTransition) {\r\n      carousel.autoplay.paused = false;\r\n      run();\r\n    } else {\r\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\r\n        carousel.$wrapperEl[0].addEventListener(event, onTransitionEnd);\r\n      });\r\n    }\r\n  }\r\n  function onVisibilityChange() {\r\n    const document = getDocument();\r\n    if (document.visibilityState === 'hidden' && carousel.autoplay.running) {\r\n      pause();\r\n    }\r\n    if (document.visibilityState === 'visible' && carousel.autoplay.paused) {\r\n      run();\r\n      carousel.autoplay.paused = false;\r\n    }\r\n  }\r\n  function onTransitionEnd(e) {\r\n    if (!carousel || carousel.destroyed || !carousel.$wrapperEl) return;\r\n    if (e.target !== carousel.$wrapperEl[0]) return;\r\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\r\n      carousel.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\r\n    });\r\n    carousel.autoplay.paused = false;\r\n    if (!carousel.autoplay.running) {\r\n      stop();\r\n    } else {\r\n      run();\r\n    }\r\n  }\r\n  function onMouseEnter() {\r\n    if (carousel.params.autoplay.disableOnInteraction) {\r\n      stop();\r\n    } else {\r\n      emit('autoplayPause');\r\n      pause();\r\n    }\r\n\r\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\r\n      carousel.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\r\n    });\r\n  }\r\n  function onMouseLeave() {\r\n    if (carousel.params.autoplay.disableOnInteraction) {\r\n      return;\r\n    }\r\n    carousel.autoplay.paused = false;\r\n    emit('autoplayResume');\r\n    run();\r\n  }\r\n  function attachMouseEvents() {\r\n    if (carousel.params.autoplay.pauseOnMouseEnter) {\r\n      carousel.$el.on('mouseenter', onMouseEnter);\r\n      carousel.$el.on('mouseleave', onMouseLeave);\r\n      carousel.autoplay.pauseOnMouseEnter = true;\r\n    }\r\n  }\r\n  function detachMouseEvents() {\r\n    carousel.$el.off('mouseenter', onMouseEnter);\r\n    carousel.$el.off('mouseleave', onMouseLeave);\r\n    carousel.autoplay.pauseOnMouseEnter = false;\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.autoplay.enabled) {\r\n      start();\r\n      const document = getDocument();\r\n      document.addEventListener('visibilitychange', onVisibilityChange);\r\n      attachMouseEvents();\r\n    }\r\n  });\r\n  on('update', () => {\r\n    if (!carousel.params.autoplay.enabled && carousel.autoplay.running) {\r\n      stop();\r\n    } else if (carousel.params.autoplay.enabled && !carousel.autoplay.running) {\r\n      start();\r\n    }\r\n    if (!carousel.params.autoplay.pauseOnMouseEnter && carousel.autoplay.pauseOnMouseEnter) {\r\n      detachMouseEvents();\r\n    } else if (carousel.params.autoplay.pauseOnMouseEnter && !carousel.autoplay.pauseOnMouseEnter) {\r\n      attachMouseEvents();\r\n    }\r\n  });\r\n  on('beforeTransitionStart', (_s, speed, internal) => {\r\n    if (carousel.autoplay.running) {\r\n      if (internal || !carousel.params.autoplay.disableOnInteraction) {\r\n        carousel.autoplay.pause(speed);\r\n      } else {\r\n        stop();\r\n      }\r\n    }\r\n  });\r\n  on('sliderFirstMove', () => {\r\n    if (carousel.autoplay.running) {\r\n      if (carousel.params.autoplay.disableOnInteraction) {\r\n        stop();\r\n      } else {\r\n        pause();\r\n      }\r\n    }\r\n  });\r\n  on('touchEnd', () => {\r\n    if (\r\n      carousel.params.cssMode &&\r\n      carousel.autoplay.paused &&\r\n      !carousel.params.autoplay.disableOnInteraction\r\n    ) {\r\n      run();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    detachMouseEvents();\r\n    if (carousel.autoplay.running) {\r\n      stop();\r\n    }\r\n    const document = getDocument();\r\n    document.removeEventListener('visibilitychange', onVisibilityChange);\r\n  });\r\n\r\n  Object.assign(carousel.autoplay, {\r\n    pause,\r\n    run,\r\n    start,\r\n    stop\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getDocument } from 'ssr-window';\r\n\r\nexport default function createElementIfNotDefined(carousel, originalParams, params, checkProps) {\r\n  const document = getDocument();\r\n  if (carousel.params.createElements) {\r\n    Object.keys(checkProps).forEach(key => {\r\n      if (!params[key] && params.auto === true) {\r\n        let element = carousel.$el.children(`.${checkProps[key]}`)[0];\r\n        if (!element) {\r\n          element = document.createElement('div');\r\n          element.className = checkProps[key];\r\n          carousel.$el.append(element);\r\n        }\r\n        params[key] = element;\r\n        originalParams[key] = element;\r\n      }\r\n    });\r\n  }\r\n  return params;\r\n}\r\n","//@ts-nocheck\r\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function Navigation({ carousel, extendParams, on, emit }) {\r\n  const pfx = 'vts-carousel-navigation';\r\n  extendParams({\r\n    navigation: {\r\n      nextEl: null,\r\n      prevEl: null,\r\n\r\n      hideOnClick: false,\r\n      disabledClass: 'vts-carousel-button-disabled',\r\n      hiddenClass: 'vts-carousel-button-hidden',\r\n      lockClass: 'vts-carousel-button-lock',\r\n      navigationDisabledClass: `${pfx}-disabled`,\r\n      horizontalClass: `${pfx}-horizontal`,\r\n      verticalClass: `${pfx}-vertical`,\r\n      position: `inner`\r\n    }\r\n  });\r\n\r\n  carousel.navigation = {\r\n    nextEl: null,\r\n    $nextEl: null,\r\n    prevEl: null,\r\n    $prevEl: null\r\n  };\r\n\r\n  function getEl(el) {\r\n    let $el;\r\n    if (el) {\r\n      $el = $(el);\r\n      if (\r\n        carousel.params.uniqueNavElements &&\r\n        typeof el === 'string' &&\r\n        $el.length > 1 &&\r\n        carousel.$el.find(el).length === 1\r\n      ) {\r\n        $el = carousel.$el.find(el);\r\n      }\r\n    }\r\n    return $el;\r\n  }\r\n\r\n  function toggleEl($el, disabled) {\r\n    const params = carousel.params.navigation;\r\n    if ($el && $el.length > 0) {\r\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\r\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\r\n      if (carousel.params.watchOverflow && carousel.enabled) {\r\n        $el[carousel.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\r\n      }\r\n    }\r\n  }\r\n  function update() {\r\n    // Update Navigation Buttons\r\n    const { $nextEl, $prevEl } = carousel.navigation;\r\n\r\n    // Direction\r\n    const params = carousel.params.navigation;\r\n    const removeCls = [\r\n      ...['-inner', '-edge'].map(suffix => `${pfx}${suffix}`),\r\n      params.horizontalClass,\r\n      params.verticalClass\r\n    ].join(' ');\r\n    if ($nextEl) {\r\n      $nextEl.removeClass(removeCls);\r\n      $nextEl.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n      $nextEl.addClass(`${pfx}-${params.position}`);\r\n    }\r\n    if ($prevEl) {\r\n      $prevEl.removeClass(removeCls);\r\n      $prevEl.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n      $prevEl.addClass(`${pfx}-${params.position}`);\r\n    }\r\n\r\n    toggleEl($prevEl, carousel.isBeginning && !carousel.params.rewind);\r\n    toggleEl($nextEl, carousel.isEnd && !carousel.params.rewind);\r\n  }\r\n  function onPrevClick(e) {\r\n    e.preventDefault();\r\n    if (carousel.isBeginning && !carousel.params.loop && !carousel.params.rewind) return;\r\n    carousel.slidePrev();\r\n    emit('navigationPrev');\r\n  }\r\n  function onNextClick(e) {\r\n    e.preventDefault();\r\n    if (carousel.isEnd && !carousel.params.loop && !carousel.params.rewind) return;\r\n    carousel.slideNext();\r\n    emit('navigationNext');\r\n  }\r\n  function init() {\r\n    const params = carousel.params.navigation;\r\n\r\n    if (!params.nextEl) params.nextEl = 'vts-carousel-button-next';\r\n\r\n    if (!params.nextEl) params.prevEl = 'vts-carousel-button-prev';\r\n\r\n    carousel.params.navigation = createElementIfNotDefined(\r\n      carousel,\r\n      carousel.originalParams.navigation,\r\n      carousel.params.navigation,\r\n      {\r\n        nextEl: 'vts-carousel-button-next',\r\n        prevEl: 'vts-carousel-button-prev'\r\n      }\r\n    );\r\n    if (!(params.nextEl || params.prevEl)) return;\r\n\r\n    const $nextEl = getEl(params.nextEl);\r\n    const $prevEl = getEl(params.prevEl);\r\n\r\n    if ($nextEl && $nextEl.length > 0) {\r\n      $nextEl.on('click', onNextClick);\r\n    }\r\n    if ($prevEl && $prevEl.length > 0) {\r\n      $prevEl.on('click', onPrevClick);\r\n    }\r\n\r\n    Object.assign(carousel.navigation, {\r\n      $nextEl,\r\n      nextEl: $nextEl && $nextEl[0],\r\n      $prevEl,\r\n      prevEl: $prevEl && $prevEl[0]\r\n    });\r\n\r\n    if (!carousel.enabled) {\r\n      if ($nextEl) $nextEl.addClass(params.lockClass);\r\n      if ($prevEl) $prevEl.addClass(params.lockClass);\r\n    }\r\n  }\r\n  function destroy() {\r\n    const { $nextEl, $prevEl } = carousel.navigation;\r\n    if ($nextEl && $nextEl.length) {\r\n      $nextEl.off('click', onNextClick);\r\n      $nextEl.removeClass(carousel.params.navigation.disabledClass);\r\n    }\r\n    if ($prevEl && $prevEl.length) {\r\n      $prevEl.off('click', onPrevClick);\r\n      $prevEl.removeClass(carousel.params.navigation.disabledClass);\r\n    }\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.navigation.enabled === false) {\r\n      // eslint-disable-next-line\r\n      disable();\r\n    } else {\r\n      init();\r\n      update();\r\n      carousel.navigation.enabled = true;\r\n    }\r\n  });\r\n  on('update', () => {\r\n    const { enabled } = carousel.params.navigation;\r\n    if (!enabled && !!carousel.navigation.enabled) disable();\r\n    if (enabled && !carousel.navigation.enabled) enable();\r\n    update();\r\n  });\r\n  on('toEdge fromEdge lock unlock', () => {\r\n    update();\r\n  });\r\n  on('destroy', () => {\r\n    destroy();\r\n  });\r\n  on('enable disable', () => {\r\n    const { $nextEl, $prevEl } = carousel.navigation;\r\n    if ($nextEl) {\r\n      $nextEl[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.navigation.lockClass);\r\n    }\r\n    if ($prevEl) {\r\n      $prevEl[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.navigation.lockClass);\r\n    }\r\n  });\r\n  on('click', (_s, e) => {\r\n    const { $nextEl, $prevEl } = carousel.navigation;\r\n    const targetEl = e.target;\r\n    if (\r\n      carousel.params.navigation.hideOnClick &&\r\n      !$(targetEl).is($prevEl) &&\r\n      !$(targetEl).is($nextEl)\r\n    ) {\r\n      if (\r\n        carousel.pagination &&\r\n        carousel.params.pagination &&\r\n        carousel.params.pagination.clickable &&\r\n        (carousel.pagination.el === targetEl || carousel.pagination.el.contains(targetEl))\r\n      )\r\n        return;\r\n      let isHidden;\r\n      if ($nextEl) {\r\n        isHidden = $nextEl.hasClass(carousel.params.navigation.hiddenClass);\r\n      } else if ($prevEl) {\r\n        isHidden = $prevEl.hasClass(carousel.params.navigation.hiddenClass);\r\n      }\r\n      if (isHidden === true) {\r\n        emit('navigationShow');\r\n      } else {\r\n        emit('navigationHide');\r\n      }\r\n      if ($nextEl) {\r\n        $nextEl.toggleClass(carousel.params.navigation.hiddenClass);\r\n      }\r\n      if ($prevEl) {\r\n        $prevEl.toggleClass(carousel.params.navigation.hiddenClass);\r\n      }\r\n    }\r\n  });\r\n\r\n  const enable = () => {\r\n    carousel.$el.removeClass(carousel.params.navigation.navigationDisabledClass);\r\n    init();\r\n    update();\r\n    carousel.navigation.enabled = true;\r\n  };\r\n\r\n  const disable = () => {\r\n    carousel.$el.addClass(carousel.params.navigation.navigationDisabledClass);\r\n    destroy();\r\n    carousel.navigation.enabled = false;\r\n  };\r\n\r\n  Object.assign(carousel.navigation, {\r\n    enable,\r\n    disable,\r\n    update,\r\n    init,\r\n    destroy\r\n  });\r\n}\r\n","//@ts-nocheck\r\nexport default function classesToSelector(classes = '') {\r\n  return `.${classes\r\n    .trim()\r\n    .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\r\n    .replace(/ /g, '.')}`;\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../../shared/dom';\r\nimport classesToSelector from '../../../shared/classes-to-selector';\r\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\r\n\r\nexport default function Pagination({ carousel, extendParams, on, emit }) {\r\n  const pfx = 'vts-carousel-pagination';\r\n  extendParams({\r\n    pagination: {\r\n      el: null,\r\n      bulletElement: 'span',\r\n      clickable: false,\r\n      hideOnClick: false,\r\n      renderBullet: null,\r\n      renderProgressbar: null,\r\n      renderFraction: null,\r\n      renderCustom: null,\r\n      progressbarOpposite: false,\r\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\r\n      dynamicBullets: false,\r\n      dynamicMainBullets: 1,\r\n      formatFractionCurrent: number => number,\r\n      formatFractionTotal: number => number,\r\n      bulletClass: `${pfx}-bullet`,\r\n      bulletActiveClass: `${pfx}-bullet-active`,\r\n      modifierClass: `${pfx}-`,\r\n      currentClass: `${pfx}-current`,\r\n      totalClass: `${pfx}-total`,\r\n      hiddenClass: `${pfx}-hidden`,\r\n      progressbarFillClass: `${pfx}-progressbar-fill`,\r\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\r\n      clickableClass: `${pfx}-clickable`,\r\n      lockClass: `${pfx}-lock`,\r\n      horizontalClass: `${pfx}-horizontal`,\r\n      verticalClass: `${pfx}-vertical`,\r\n      paginationDisabledClass: `${pfx}-disabled`\r\n    }\r\n  });\r\n\r\n  carousel.pagination = {\r\n    el: null,\r\n    $el: null,\r\n    bullets: []\r\n  };\r\n\r\n  let bulletSize;\r\n  let dynamicBulletIndex = 0;\r\n\r\n  function isPaginationDisabled() {\r\n    return (\r\n      !carousel.params.pagination.el ||\r\n      !carousel.pagination.el ||\r\n      !carousel.pagination.$el ||\r\n      carousel.pagination.$el.length === 0\r\n    );\r\n  }\r\n\r\n  function setSideBullets($bulletEl, position) {\r\n    const { bulletActiveClass } = carousel.params.pagination;\r\n    $bulletEl[position]()\r\n      .addClass(`${bulletActiveClass}-${position}`)\r\n      [position]()\r\n      .addClass(`${bulletActiveClass}-${position}-${position}`);\r\n  }\r\n\r\n  function update() {\r\n    // Render || Update Pagination bullets/items\r\n    const rtl = carousel.rtl;\r\n    const params = carousel.params.pagination;\r\n    if (isPaginationDisabled()) return;\r\n    const slidesLength =\r\n      carousel.virtual && carousel.params.virtual.enabled\r\n        ? carousel.virtual.slides.length\r\n        : carousel.slides.length;\r\n    const $el = carousel.pagination.$el;\r\n    // Direction\r\n    $el.removeClass([params.verticalClass, params.horizontalClass].join(' '));\r\n    $el.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n    // Current/Total\r\n    let current;\r\n    const total = carousel.params.loop\r\n      ? Math.ceil((slidesLength - carousel.loopedSlides * 2) / carousel.params.slidesPerGroup)\r\n      : carousel.snapGrid.length;\r\n    if (carousel.params.loop) {\r\n      current = Math.ceil(\r\n        (carousel.activeIndex - carousel.loopedSlides) / carousel.params.slidesPerGroup\r\n      );\r\n      if (current > slidesLength - 1 - carousel.loopedSlides * 2) {\r\n        current -= slidesLength - carousel.loopedSlides * 2;\r\n      }\r\n      if (current > total - 1) current -= total;\r\n      if (current < 0 && carousel.params.paginationType !== 'bullets') current = total + current;\r\n    } else if (typeof carousel.snapIndex !== 'undefined') {\r\n      current = carousel.snapIndex;\r\n    } else {\r\n      current = carousel.activeIndex || 0;\r\n    }\r\n    // Types\r\n    if (params.type === 'bullets') {\r\n      if (carousel.pagination.bullets && carousel.pagination.bullets.length > 0) {\r\n        const bullets = carousel.pagination.bullets;\r\n        const offsetProp = rtl ? 'right' : 'left';\r\n        let firstIndex;\r\n        let lastIndex;\r\n        let midIndex;\r\n\r\n        // Reset default styles and class\r\n        $el.css('width', null);\r\n        $el.css('height', null);\r\n        bullets.css(offsetProp, null);\r\n        bullets.css('top', null);\r\n        $el.removeClass(`${params.modifierClass}${params.type}-dynamic`);\r\n\r\n        bullets.removeClass(\r\n          ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\r\n            .map(suffix => `${params.bulletActiveClass}${suffix}`)\r\n            .join(' ')\r\n        );\r\n\r\n        // Detect changes\r\n        if (params.dynamicBullets) {\r\n          bulletSize = bullets.eq(0)[carousel.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\r\n          $el.css(\r\n            carousel.isHorizontal() ? 'width' : 'height',\r\n            `${bulletSize * (params.dynamicMainBullets + 4)}px`\r\n          );\r\n          if (params.dynamicMainBullets > 1 && carousel.previousIndex !== undefined) {\r\n            dynamicBulletIndex += current - (carousel.previousIndex - carousel.loopedSlides || 0);\r\n            if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\r\n              dynamicBulletIndex = params.dynamicMainBullets - 1;\r\n            } else if (dynamicBulletIndex < 0) {\r\n              dynamicBulletIndex = 0;\r\n            }\r\n          }\r\n          firstIndex = Math.max(current - dynamicBulletIndex, 0);\r\n          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\r\n          midIndex = (lastIndex + firstIndex) / 2;\r\n\r\n          const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\r\n          const bulletsOffset =\r\n            (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\r\n          bullets.css(carousel.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\r\n          $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\r\n        }\r\n\r\n        if ($el.length > 1) {\r\n          bullets.each(bullet => {\r\n            const $bullet = $(bullet);\r\n            const bulletIndex = $bullet.index();\r\n            if (bulletIndex === current) {\r\n              $bullet.addClass(params.bulletActiveClass);\r\n            }\r\n            if (params.dynamicBullets) {\r\n              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\r\n                $bullet.addClass(`${params.bulletActiveClass}-main`);\r\n              }\r\n              if (bulletIndex === firstIndex) {\r\n                setSideBullets($bullet, 'prev');\r\n              }\r\n              if (bulletIndex === lastIndex) {\r\n                setSideBullets($bullet, 'next');\r\n              }\r\n            }\r\n          });\r\n        } else {\r\n          const $bullet = bullets.eq(current);\r\n          const bulletIndex = $bullet.index();\r\n          $bullet.addClass(params.bulletActiveClass);\r\n          if (params.dynamicBullets) {\r\n            const $firstDisplayedBullet = bullets.eq(firstIndex);\r\n            const $lastDisplayedBullet = bullets.eq(lastIndex);\r\n            for (let i = firstIndex; i <= lastIndex; i += 1) {\r\n              bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\r\n            }\r\n            if (carousel.params.loop) {\r\n              if (bulletIndex >= bullets.length) {\r\n                for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\r\n                  bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\r\n                }\r\n                bullets\r\n                  .eq(bullets.length - params.dynamicMainBullets - 1)\r\n                  .addClass(`${params.bulletActiveClass}-prev`);\r\n              } else {\r\n                setSideBullets($firstDisplayedBullet, 'prev');\r\n                setSideBullets($lastDisplayedBullet, 'next');\r\n              }\r\n            } else {\r\n              setSideBullets($firstDisplayedBullet, 'prev');\r\n              setSideBullets($lastDisplayedBullet, 'next');\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      if (params.clickable) {\r\n        $el.addClass(params.clickableClass);\r\n        $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\r\n          e.preventDefault();\r\n          let index = $(this).index() * carousel.params.slidesPerGroup;\r\n          if (carousel.params.loop) index += carousel.loopedSlides;\r\n          carousel.slideTo(index);\r\n        });\r\n      } else {\r\n        $el.removeClass(params.clickableClass);\r\n        $el.off('click', classesToSelector(params.bulletClass));\r\n      }\r\n    }\r\n\r\n    if (params.type === 'fraction') {\r\n      $el\r\n        .find(classesToSelector(params.currentClass))\r\n        .text(params.formatFractionCurrent(current + 1));\r\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\r\n    }\r\n\r\n    if (params.type === 'progressbar') {\r\n      let progressbarDirection;\r\n      if (params.progressbarOpposite) {\r\n        progressbarDirection = carousel.isHorizontal() ? 'vertical' : 'horizontal';\r\n      } else {\r\n        progressbarDirection = carousel.isHorizontal() ? 'horizontal' : 'vertical';\r\n      }\r\n      const scale = (current + 1) / total;\r\n      let scaleX = 1;\r\n      let scaleY = 1;\r\n      if (progressbarDirection === 'horizontal') {\r\n        scaleX = scale;\r\n      } else {\r\n        scaleY = scale;\r\n      }\r\n      $el\r\n        .find(classesToSelector(params.progressbarFillClass))\r\n        .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\r\n        .transition(carousel.params.speed);\r\n    }\r\n\r\n    // Not happening\r\n    // if (params.type === 'custom' && params.renderCustom) {\r\n    //   $el.html(params.renderCustom(carousel, current + 1, total));\r\n    //   emit('paginationRender', $el[0]);\r\n    // } else {\r\n    //   emit('paginationUpdate', $el[0]);\r\n    // }\r\n\r\n    if (carousel.params.watchOverflow && carousel.enabled) {\r\n      $el[carousel.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\r\n    }\r\n  }\r\n\r\n  function render() {\r\n    // Render Container\r\n    const params = carousel.params.pagination;\r\n    if (isPaginationDisabled()) return;\r\n    const slidesLength =\r\n      carousel.virtual && carousel.params.virtual.enabled\r\n        ? carousel.virtual.slides.length\r\n        : carousel.slides.length;\r\n\r\n    const $el = carousel.pagination.$el;\r\n    let paginationHTML = '';\r\n\r\n    if (carousel.pagination.prevParams?.type) {\r\n      $el.removeClass(params.modifierClass + carousel.pagination.prevParams.type);\r\n    }\r\n\r\n    $el.addClass(params.modifierClass + params.type);\r\n\r\n    if (params.type === 'bullets') {\r\n      let numberOfBullets = carousel.params.loop\r\n        ? Math.ceil((slidesLength - carousel.loopedSlides * 2) / carousel.params.slidesPerGroup)\r\n        : carousel.snapGrid.length;\r\n\r\n      if (params.dynamicBullets) {\r\n        dynamicBulletIndex = 0;\r\n        if (params.dynamicMainBullets < 1) {\r\n          params.dynamicMainBullets = 1;\r\n        }\r\n      }\r\n\r\n      if (\r\n        carousel.params.freeMode &&\r\n        carousel.params.freeMode.enabled &&\r\n        !carousel.params.loop &&\r\n        numberOfBullets > slidesLength\r\n      ) {\r\n        numberOfBullets = slidesLength;\r\n      }\r\n      for (let i = 0; i < numberOfBullets; i += 1) {\r\n        if (params.renderBullet) {\r\n          paginationHTML += params.renderBullet.call(carousel, i, params.bulletClass);\r\n        } else {\r\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\r\n        }\r\n      }\r\n      $el.html(paginationHTML);\r\n\r\n      carousel.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\r\n    }\r\n    if (params.type === 'fraction') {\r\n      if (params.renderFraction) {\r\n        paginationHTML = params.renderFraction.call(\r\n          carousel,\r\n          params.currentClass,\r\n          params.totalClass\r\n        );\r\n      } else {\r\n        paginationHTML =\r\n          `<span class=\"${params.currentClass}\"></span>` +\r\n          ' / ' +\r\n          `<span class=\"${params.totalClass}\"></span>`;\r\n      }\r\n      $el.html(paginationHTML);\r\n    }\r\n    if (params.type === 'progressbar') {\r\n      if (params.progressbarOpposite) {\r\n        $el.addClass(params.progressbarOppositeClass);\r\n      }\r\n\r\n      if (params.renderProgressbar) {\r\n        paginationHTML = params.renderProgressbar.call(carousel, params.progressbarFillClass);\r\n      } else {\r\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\r\n      }\r\n      $el.html(paginationHTML);\r\n    }\r\n    if (params.type !== 'custom') {\r\n      emit('paginationRender', carousel.pagination.$el[0]);\r\n    }\r\n    carousel.pagination.prevParams = { ...params };\r\n  }\r\n  function init() {\r\n    carousel.params.pagination = createElementIfNotDefined(\r\n      carousel,\r\n      carousel.originalParams.pagination,\r\n      carousel.params.pagination,\r\n      { el: 'vts-carousel-pagination' }\r\n    );\r\n    const params = carousel.params.pagination;\r\n    if (!params.el) return;\r\n\r\n    let $el = $(params.el);\r\n    if ($el.length === 0) return;\r\n\r\n    if (carousel.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\r\n      $el = carousel.$el.find(params.el);\r\n      // check if it belongs to another nested carousel\r\n      if ($el.length > 1) {\r\n        $el = $el.filter(el => {\r\n          if ($(el).parents('.vts-carousel')[0] !== carousel.el) return false;\r\n          return true;\r\n        });\r\n      }\r\n    }\r\n\r\n    Object.assign(carousel.pagination, {\r\n      $el,\r\n      el: $el[0]\r\n    });\r\n\r\n    if (!carousel.enabled) {\r\n      $el.addClass(params.lockClass);\r\n    }\r\n  }\r\n  function destroy() {\r\n    const params = carousel.params.pagination;\r\n    if (isPaginationDisabled()) return;\r\n    const $el = carousel.pagination.$el;\r\n\r\n    $el.removeClass(params.hiddenClass);\r\n    $el.removeClass(params.modifierClass + params.type);\r\n    $el.removeClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n    if (carousel.pagination.bullets && carousel.pagination.bullets.removeClass)\r\n      carousel.pagination.bullets.removeClass(params.bulletActiveClass);\r\n    if (params.clickable) {\r\n      $el.off('click', classesToSelector(params.bulletClass));\r\n    }\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.pagination.enabled === false) {\r\n      // eslint-disable-next-line\r\n      disable();\r\n    } else {\r\n      init();\r\n      render();\r\n      update();\r\n      carousel.pagination.enabled = true;\r\n    }\r\n  });\r\n  on('update', () => {\r\n    const { enabled, type, renderBullet, renderCustom, renderFraction, renderProgressbar } =\r\n      carousel.params.pagination;\r\n    const {\r\n      type: oType,\r\n      renderBullet: oRenderBullet,\r\n      renderCustom: oRenderCustom,\r\n      renderFraction: oRenderFraction,\r\n      renderProgressbar: oRenderProgressbar\r\n    } = carousel.pagination.prevParams || {};\r\n    if (!enabled && !!carousel.pagination.enabled) disable();\r\n    if (enabled && !carousel.pagination.enabled) enable();\r\n\r\n    if (\r\n      type !== oType ||\r\n      renderBullet !== oRenderBullet ||\r\n      renderCustom !== oRenderCustom ||\r\n      renderFraction !== oRenderFraction\r\n    ) {\r\n      render();\r\n    }\r\n    update();\r\n  });\r\n  on('activeIndexChange', () => {\r\n    if (carousel.params.loop) {\r\n      update();\r\n    } else if (typeof carousel.snapIndex === 'undefined') {\r\n      update();\r\n    }\r\n    update();\r\n  });\r\n  on('snapIndexChange', () => {\r\n    if (!carousel.params.loop) {\r\n      update();\r\n    }\r\n  });\r\n  on('slidesLengthChange', () => {\r\n    if (carousel.params.loop) {\r\n      render();\r\n      update();\r\n    }\r\n  });\r\n  on('snapGridLengthChange', () => {\r\n    if (!carousel.params.loop) {\r\n      render();\r\n      update();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    destroy();\r\n  });\r\n  on('enable disable', () => {\r\n    const { $el } = carousel.pagination;\r\n    if ($el) {\r\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.pagination.lockClass);\r\n    }\r\n  });\r\n  on('lock unlock', () => {\r\n    update();\r\n  });\r\n  on('click', (_s, e) => {\r\n    const targetEl = e.target;\r\n    const { $el } = carousel.pagination;\r\n    if (\r\n      carousel.params.pagination.el &&\r\n      carousel.params.pagination.hideOnClick &&\r\n      $el &&\r\n      $el.length > 0 &&\r\n      !$(targetEl).hasClass(carousel.params.pagination.bulletClass)\r\n    ) {\r\n      if (\r\n        carousel.navigation &&\r\n        ((carousel.navigation.nextEl && targetEl === carousel.navigation.nextEl) ||\r\n          (carousel.navigation.prevEl && targetEl === carousel.navigation.prevEl))\r\n      )\r\n        return;\r\n      const isHidden = $el.hasClass(carousel.params.pagination.hiddenClass);\r\n      if (isHidden === true) {\r\n        emit('paginationShow');\r\n      } else {\r\n        emit('paginationHide');\r\n      }\r\n      $el.toggleClass(carousel.params.pagination.hiddenClass);\r\n    }\r\n  });\r\n\r\n  const enable = () => {\r\n    carousel.$el.removeClass(carousel.params.pagination.paginationDisabledClass);\r\n    if (carousel.pagination.$el) {\r\n      carousel.pagination.$el.removeClass(carousel.params.pagination.paginationDisabledClass);\r\n    }\r\n    init();\r\n    render();\r\n    update();\r\n    carousel.pagination.enabled = true;\r\n  };\r\n\r\n  const disable = () => {\r\n    carousel.$el.addClass(carousel.params.pagination.paginationDisabledClass);\r\n    if (carousel.pagination.$el) {\r\n      carousel.pagination.$el.addClass(carousel.params.pagination.paginationDisabledClass);\r\n    }\r\n    destroy();\r\n    carousel.pagination.enabled = false;\r\n  };\r\n\r\n  Object.assign(carousel.pagination, {\r\n    enable,\r\n    disable,\r\n    render,\r\n    update,\r\n    init,\r\n    destroy\r\n  });\r\n}\r\n","//@ts-nocheck\r\n/* eslint-disable no-underscore-dangle */\r\n\r\nexport default {\r\n  on(events, handler, priority) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (typeof handler !== 'function') return self;\r\n    const method = priority ? 'unshift' : 'push';\r\n    events.split(' ').forEach(event => {\r\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\r\n      self.eventsListeners[event][method](handler);\r\n    });\r\n    return self;\r\n  },\r\n\r\n  once(events, handler, priority) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (typeof handler !== 'function') return self;\r\n    function onceHandler(...args) {\r\n      self.off(events, onceHandler);\r\n      if (onceHandler.__emitterProxy) {\r\n        delete onceHandler.__emitterProxy;\r\n      }\r\n      handler.apply(self, args);\r\n    }\r\n    onceHandler.__emitterProxy = handler;\r\n    return self.on(events, onceHandler, priority);\r\n  },\r\n\r\n  onAny(handler, priority) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (typeof handler !== 'function') return self;\r\n    const method = priority ? 'unshift' : 'push';\r\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\r\n      self.eventsAnyListeners[method](handler);\r\n    }\r\n    return self;\r\n  },\r\n\r\n  offAny(handler) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (!self.eventsAnyListeners) return self;\r\n    const index = self.eventsAnyListeners.indexOf(handler);\r\n    if (index >= 0) {\r\n      self.eventsAnyListeners.splice(index, 1);\r\n    }\r\n    return self;\r\n  },\r\n\r\n  off(events, handler) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (!self.eventsListeners) return self;\r\n    events.split(' ').forEach(event => {\r\n      if (typeof handler === 'undefined') {\r\n        self.eventsListeners[event] = [];\r\n      } else if (self.eventsListeners[event]) {\r\n        self.eventsListeners[event].forEach((eventHandler, index) => {\r\n          if (\r\n            eventHandler === handler ||\r\n            (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\r\n          ) {\r\n            self.eventsListeners[event].splice(index, 1);\r\n          }\r\n        });\r\n      }\r\n    });\r\n    return self;\r\n  },\r\n\r\n  emit(...args) {\r\n    const self = this;\r\n    if (!self.eventsListeners || self.destroyed) return self;\r\n    if (!self.eventsListeners) return self;\r\n    let events;\r\n    let data;\r\n    let context;\r\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\r\n      events = args[0];\r\n      data = args.slice(1, args.length);\r\n      context = self;\r\n    } else {\r\n      events = args[0].events;\r\n      data = args[0].data;\r\n      context = args[0].context || self;\r\n    }\r\n    data.unshift(context);\r\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\r\n\r\n    eventsArray.forEach(event => {\r\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\r\n        self.eventsAnyListeners.forEach(eventHandler => {\r\n          eventHandler.apply(context, [event, ...data]);\r\n        });\r\n      }\r\n      if (self.eventsListeners && self.eventsListeners[event]) {\r\n        self.eventsListeners[event].forEach(eventHandler => {\r\n          eventHandler.apply(context, data);\r\n        });\r\n      }\r\n    });\r\n    return self;\r\n  }\r\n};\r\n","//@ts-nocheck\r\nexport default function updateSize() {\r\n  const carousel = this;\r\n  let width;\r\n  let height;\r\n  const $el = carousel.$el;\r\n  if (typeof carousel.params.width !== 'undefined' && carousel.params.width !== null) {\r\n    width = carousel.params.width;\r\n  } else {\r\n    width = $el[0].clientWidth;\r\n  }\r\n  if (typeof carousel.params.height !== 'undefined' && carousel.params.height !== null) {\r\n    height = carousel.params.height;\r\n  } else {\r\n    height = $el[0].clientHeight;\r\n  }\r\n  if ((width === 0 && carousel.isHorizontal()) || (height === 0 && carousel.isVertical())) {\r\n    return;\r\n  }\r\n\r\n  // Subtract paddings\r\n  width =\r\n    width -\r\n    parseInt($el.css('padding-left') || 0, 10) -\r\n    parseInt($el.css('padding-right') || 0, 10);\r\n  height =\r\n    height -\r\n    parseInt($el.css('padding-top') || 0, 10) -\r\n    parseInt($el.css('padding-bottom') || 0, 10);\r\n\r\n  if (Number.isNaN(width)) width = 0;\r\n  if (Number.isNaN(height)) height = 0;\r\n\r\n  Object.assign(carousel, {\r\n    width,\r\n    height,\r\n    size: carousel.isHorizontal() ? width : height\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { setCSSProperty } from '../../shared/utils';\r\n\r\nexport default function updateSlides() {\r\n  const carousel = this;\r\n  function getDirectionLabel(property) {\r\n    if (carousel.isHorizontal()) {\r\n      return property;\r\n    }\r\n    // prettier-ignore\r\n    return {\r\n      'width': 'height',\r\n      'margin-top': 'margin-left',\r\n      'margin-bottom ': 'margin-right',\r\n      'margin-left': 'margin-top',\r\n      'margin-right': 'margin-bottom',\r\n      'padding-left': 'padding-top',\r\n      'padding-right': 'padding-bottom',\r\n      'marginRight': 'marginBottom',\r\n    }[property];\r\n  }\r\n  function getDirectionPropertyValue(node, label) {\r\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\r\n  }\r\n\r\n  const params = carousel.params;\r\n\r\n  const { $wrapperEl, size: carouselSize, rtlTranslate: rtl, wrongRTL } = carousel;\r\n  const isVirtual = carousel.virtual && params.virtual.enabled;\r\n  const previousSlidesLength = isVirtual ? carousel.virtual.slides.length : carousel.slides.length;\r\n  const slides = $wrapperEl.children(`.${carousel.params.slideClass}`);\r\n  const slidesLength = isVirtual ? carousel.virtual.slides.length : slides.length;\r\n  let snapGrid = [];\r\n  const slidesGrid = [];\r\n  const slidesSizesGrid = [];\r\n\r\n  let offsetBefore = params.slidesOffsetBefore;\r\n  if (typeof offsetBefore === 'function') {\r\n    offsetBefore = params.slidesOffsetBefore.call(carousel);\r\n  }\r\n\r\n  let offsetAfter = params.slidesOffsetAfter;\r\n  if (typeof offsetAfter === 'function') {\r\n    offsetAfter = params.slidesOffsetAfter.call(carousel);\r\n  }\r\n\r\n  const previousSnapGridLength = carousel.snapGrid.length;\r\n  const previousSlidesGridLength = carousel.slidesGrid.length;\r\n\r\n  let spaceBetween = params.spaceBetween;\r\n  let slidePosition = -offsetBefore;\r\n  let prevSlideSize = 0;\r\n  let index = 0;\r\n  if (typeof carouselSize === 'undefined') {\r\n    return;\r\n  }\r\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\r\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * carouselSize;\r\n  }\r\n\r\n  carousel.virtualSize = -spaceBetween;\r\n\r\n  // reset margins\r\n  if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\r\n  else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\r\n\r\n  // reset cssMode offsets\r\n  if (params.centeredSlides && params.cssMode) {\r\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-before', '');\r\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-after', '');\r\n  }\r\n\r\n  const gridEnabled = params.grid && params.grid.rows > 1 && carousel.grid;\r\n  if (gridEnabled) {\r\n    carousel.grid.initSlides(slidesLength);\r\n  }\r\n\r\n  // Calc slides\r\n  let slideSize;\r\n\r\n  const shouldResetSlideSize =\r\n    params.slidesPerView === 'auto' &&\r\n    params.breakpoints &&\r\n    Object.keys(params.breakpoints).filter(key => {\r\n      return typeof params.breakpoints[key].slidesPerView !== 'undefined';\r\n    }).length > 0;\r\n\r\n  for (let i = 0; i < slidesLength; i += 1) {\r\n    slideSize = 0;\r\n    const slide = slides.eq(i);\r\n    if (gridEnabled) {\r\n      carousel.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\r\n    }\r\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\r\n\r\n    if (params.slidesPerView === 'auto') {\r\n      if (shouldResetSlideSize) {\r\n        slides[i].style[getDirectionLabel('width')] = ``;\r\n      }\r\n      const slideStyles = getComputedStyle(slide[0]);\r\n      const currentTransform = slide[0].style.transform;\r\n      const currentWebKitTransform = slide[0].style.webkitTransform;\r\n      if (currentTransform) {\r\n        slide[0].style.transform = 'none';\r\n      }\r\n      if (currentWebKitTransform) {\r\n        slide[0].style.webkitTransform = 'none';\r\n      }\r\n      if (params.roundLengths) {\r\n        slideSize = carousel.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\r\n      } else {\r\n        // eslint-disable-next-line\r\n        const width = getDirectionPropertyValue(slideStyles, 'width');\r\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\r\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\r\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\r\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\r\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\r\n        if (boxSizing && boxSizing === 'border-box') {\r\n          slideSize = width + marginLeft + marginRight;\r\n        } else {\r\n          const { clientWidth, offsetWidth } = slide[0];\r\n          slideSize =\r\n            width +\r\n            paddingLeft +\r\n            paddingRight +\r\n            marginLeft +\r\n            marginRight +\r\n            (offsetWidth - clientWidth);\r\n        }\r\n      }\r\n      if (currentTransform) {\r\n        slide[0].style.transform = currentTransform;\r\n      }\r\n      if (currentWebKitTransform) {\r\n        slide[0].style.webkitTransform = currentWebKitTransform;\r\n      }\r\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\r\n    } else {\r\n      slideSize = (carouselSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\r\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\r\n\r\n      if (slides[i]) {\r\n        // Reset\r\n        slides[i].style['width'] = '';\r\n        slides[i].style['height'] = '';\r\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\r\n      }\r\n    }\r\n    if (slides[i]) {\r\n      slides[i].carouselSlideSize = slideSize;\r\n    }\r\n    slidesSizesGrid.push(slideSize);\r\n\r\n    if (params.centeredSlides) {\r\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\r\n      if (prevSlideSize === 0 && i !== 0)\r\n        slidePosition = slidePosition - carouselSize / 2 - spaceBetween;\r\n      if (i === 0) slidePosition = slidePosition - carouselSize / 2 - spaceBetween;\r\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\r\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\r\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\r\n      slidesGrid.push(slidePosition);\r\n    } else {\r\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\r\n      if (\r\n        (index - Math.min(carousel.params.slidesPerGroupSkip, index)) %\r\n          carousel.params.slidesPerGroup ===\r\n        0\r\n      )\r\n        snapGrid.push(slidePosition);\r\n      slidesGrid.push(slidePosition);\r\n      slidePosition = slidePosition + slideSize + spaceBetween;\r\n    }\r\n\r\n    carousel.virtualSize += slideSize + spaceBetween;\r\n\r\n    prevSlideSize = slideSize;\r\n\r\n    index += 1;\r\n  }\r\n  carousel.virtualSize = Math.max(carousel.virtualSize, carouselSize) + offsetAfter;\r\n\r\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\r\n    $wrapperEl.css({ width: `${carousel.virtualSize + params.spaceBetween}px` });\r\n  }\r\n  if (params.setWrapperSize) {\r\n    $wrapperEl.css({\r\n      [getDirectionLabel('width')]: `${carousel.virtualSize + params.spaceBetween}px`\r\n    });\r\n  }\r\n\r\n  if (gridEnabled) {\r\n    carousel.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\r\n  }\r\n\r\n  // Remove last grid elements depending on width\r\n  if (!params.centeredSlides) {\r\n    const newSlidesGrid = [];\r\n    for (let i = 0; i < snapGrid.length; i += 1) {\r\n      let slidesGridItem = snapGrid[i];\r\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\r\n      if (snapGrid[i] <= carousel.virtualSize - carouselSize) {\r\n        newSlidesGrid.push(slidesGridItem);\r\n      }\r\n    }\r\n    snapGrid = newSlidesGrid;\r\n\r\n    if (\r\n      Math.floor(carousel.virtualSize - carouselSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\r\n      1\r\n    ) {\r\n      snapGrid.push(carousel.virtualSize - carouselSize);\r\n    }\r\n  }\r\n  if (snapGrid.length === 0) snapGrid = [0];\r\n\r\n  if (params.spaceBetween !== 0) {\r\n    const key = carousel.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\r\n    slides\r\n      .filter((_, slideIndex) => {\r\n        if (!params.cssMode) return true;\r\n        if (slideIndex === slides.length - 1) {\r\n          return false;\r\n        }\r\n        return true;\r\n      })\r\n      .css({ [key]: `${spaceBetween}px` });\r\n  }\r\n\r\n  if (params.centeredSlides && params.centeredSlidesBounds) {\r\n    let allSlidesSize = 0;\r\n    slidesSizesGrid.forEach(slideSizeValue => {\r\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\r\n    });\r\n    allSlidesSize -= params.spaceBetween;\r\n    const maxSnap = allSlidesSize - carouselSize;\r\n    snapGrid = snapGrid.map(snap => {\r\n      if (snap < 0) return -offsetBefore;\r\n      if (snap > maxSnap) return maxSnap + offsetAfter;\r\n      return snap;\r\n    });\r\n  }\r\n\r\n  if (params.centerInsufficientSlides) {\r\n    let allSlidesSize = 0;\r\n    slidesSizesGrid.forEach(slideSizeValue => {\r\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\r\n    });\r\n    allSlidesSize -= params.spaceBetween;\r\n    if (allSlidesSize < carouselSize) {\r\n      const allSlidesOffset = (carouselSize - allSlidesSize) / 2;\r\n      snapGrid.forEach((snap, snapIndex) => {\r\n        snapGrid[snapIndex] = snap - allSlidesOffset;\r\n      });\r\n      slidesGrid.forEach((snap, snapIndex) => {\r\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\r\n      });\r\n    }\r\n  }\r\n\r\n  Object.assign(carousel, {\r\n    slides,\r\n    snapGrid,\r\n    slidesGrid,\r\n    slidesSizesGrid\r\n  });\r\n\r\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\r\n    setCSSProperty(carousel.wrapperEl, '--carousel-centered-offset-before', `${-snapGrid[0]}px`);\r\n    setCSSProperty(\r\n      carousel.wrapperEl,\r\n      '--carousel-centered-offset-after',\r\n      `${carousel.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`\r\n    );\r\n    const addToSnapGrid = -carousel.snapGrid[0];\r\n    const addToSlidesGrid = -carousel.slidesGrid[0];\r\n    carousel.snapGrid = carousel.snapGrid.map(v => v + addToSnapGrid);\r\n    carousel.slidesGrid = carousel.slidesGrid.map(v => v + addToSlidesGrid);\r\n  }\r\n\r\n  if (slidesLength !== previousSlidesLength) {\r\n    carousel.emit('slidesLengthChange');\r\n  }\r\n  if (snapGrid.length !== previousSnapGridLength) {\r\n    if (carousel.params.watchOverflow) carousel.checkOverflow();\r\n    carousel.emit('snapGridLengthChange');\r\n  }\r\n  if (slidesGrid.length !== previousSlidesGridLength) {\r\n    carousel.emit('slidesGridLengthChange');\r\n  }\r\n\r\n  if (params.watchSlidesProgress) {\r\n    carousel.updateSlidesOffset();\r\n  }\r\n\r\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\r\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\r\n    const hasClassBackfaceClassAdded = carousel.$el.hasClass(backFaceHiddenClass);\r\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\r\n      if (!hasClassBackfaceClassAdded) carousel.$el.addClass(backFaceHiddenClass);\r\n    } else if (hasClassBackfaceClassAdded) {\r\n      carousel.$el.removeClass(backFaceHiddenClass);\r\n    }\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../shared/dom';\r\n\r\nexport default function updateAutoHeight(speed) {\r\n  const carousel = this;\r\n  const activeSlides = [];\r\n  const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\r\n  let newHeight = 0;\r\n  let i;\r\n  if (typeof speed === 'number') {\r\n    carousel.setTransition(speed);\r\n  } else if (speed === true) {\r\n    carousel.setTransition(carousel.params.speed);\r\n  }\r\n\r\n  const getSlideByIndex = index => {\r\n    if (isVirtual) {\r\n      return carousel.slides.filter(\r\n        el => parseInt(el.getAttribute('data-carousel-slide-index'), 10) === index\r\n      )[0];\r\n    }\r\n    return carousel.slides.eq(index)[0];\r\n  };\r\n  // Find slides currently in view\r\n  if (carousel.params.slidesPerView !== 'auto' && carousel.params.slidesPerView > 1) {\r\n    if (carousel.params.centeredSlides) {\r\n      (carousel.visibleSlides || $([])).each(slide => {\r\n        activeSlides.push(slide);\r\n      });\r\n    } else {\r\n      for (i = 0; i < Math.ceil(carousel.params.slidesPerView); i += 1) {\r\n        const index = carousel.activeIndex + i;\r\n        if (index > carousel.slides.length && !isVirtual) break;\r\n        activeSlides.push(getSlideByIndex(index));\r\n      }\r\n    }\r\n  } else {\r\n    activeSlides.push(getSlideByIndex(carousel.activeIndex));\r\n  }\r\n\r\n  // Find new height from highest slide in view\r\n  for (i = 0; i < activeSlides.length; i += 1) {\r\n    if (typeof activeSlides[i] !== 'undefined') {\r\n      const height = activeSlides[i].offsetHeight;\r\n      newHeight = height > newHeight ? height : newHeight;\r\n    }\r\n  }\r\n\r\n  // Update Height\r\n  if (newHeight || newHeight === 0) carousel.$wrapperEl.css('height', `${newHeight}px`);\r\n}\r\n","//@ts-nocheck\r\nexport default function updateSlidesOffset() {\r\n  const carousel = this;\r\n  const slides = carousel.slides;\r\n  for (let i = 0; i < slides.length; i += 1) {\r\n    slides[i].carouselSlideOffset = carousel.isHorizontal()\r\n      ? slides[i].offsetLeft\r\n      : slides[i].offsetTop;\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../shared/dom';\r\n\r\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\r\n  const carousel = this;\r\n  const params = carousel.params;\r\n\r\n  const { slides, rtlTranslate: rtl, snapGrid } = carousel;\r\n\r\n  if (slides.length === 0) return;\r\n  if (typeof slides[0].carouselSlideOffset === 'undefined') carousel.updateSlidesOffset();\r\n\r\n  let offsetCenter = -translate;\r\n  if (rtl) offsetCenter = translate;\r\n\r\n  // Visible Slides\r\n  slides.removeClass(params.slideVisibleClass);\r\n\r\n  carousel.visibleSlidesIndexes = [];\r\n  carousel.visibleSlides = [];\r\n\r\n  for (let i = 0; i < slides.length; i += 1) {\r\n    const slide = slides[i];\r\n    let slideOffset = slide.carouselSlideOffset;\r\n    if (params.cssMode && params.centeredSlides) {\r\n      slideOffset -= slides[0].carouselSlideOffset;\r\n    }\r\n\r\n    const slideProgress =\r\n      (offsetCenter + (params.centeredSlides ? carousel.minTranslate() : 0) - slideOffset) /\r\n      (slide.carouselSlideSize + params.spaceBetween);\r\n    const originalSlideProgress =\r\n      (offsetCenter -\r\n        snapGrid[0] +\r\n        (params.centeredSlides ? carousel.minTranslate() : 0) -\r\n        slideOffset) /\r\n      (slide.carouselSlideSize + params.spaceBetween);\r\n    const slideBefore = -(offsetCenter - slideOffset);\r\n    const slideAfter = slideBefore + carousel.slidesSizesGrid[i];\r\n    const isVisible =\r\n      (slideBefore >= 0 && slideBefore < carousel.size - 1) ||\r\n      (slideAfter > 1 && slideAfter <= carousel.size) ||\r\n      (slideBefore <= 0 && slideAfter >= carousel.size);\r\n    if (isVisible) {\r\n      carousel.visibleSlides.push(slide);\r\n      carousel.visibleSlidesIndexes.push(i);\r\n      slides.eq(i).addClass(params.slideVisibleClass);\r\n    }\r\n    slide.progress = rtl ? -slideProgress : slideProgress;\r\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\r\n  }\r\n  carousel.visibleSlides = $(carousel.visibleSlides);\r\n}\r\n","//@ts-nocheck\r\nexport default function updateProgress(translate) {\r\n  const carousel = this;\r\n  if (typeof translate === 'undefined') {\r\n    const multiplier = carousel.rtlTranslate ? -1 : 1;\r\n    // eslint-disable-next-line\r\n    translate = (carousel && carousel.translate && carousel.translate * multiplier) || 0;\r\n  }\r\n  const params = carousel.params;\r\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\r\n  let { progress, isBeginning, isEnd } = carousel;\r\n  const wasBeginning = isBeginning;\r\n  const wasEnd = isEnd;\r\n  if (params.loop) {\r\n    isBeginning = false;\r\n    isEnd = false;\r\n  } else if (translatesDiff === 0) {\r\n    progress = 0;\r\n    isBeginning = true;\r\n    isEnd = true;\r\n  } else {\r\n    progress = (translate - carousel.minTranslate()) / translatesDiff;\r\n    isBeginning = progress <= 0;\r\n    isEnd = progress >= 1;\r\n  }\r\n  Object.assign(carousel, {\r\n    progress,\r\n    isBeginning,\r\n    isEnd\r\n  });\r\n\r\n  if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\r\n    carousel.updateSlidesProgress(translate);\r\n\r\n  if (isBeginning && !wasBeginning) {\r\n    carousel.emit('reachBeginning toEdge');\r\n  }\r\n  if (isEnd && !wasEnd) {\r\n    carousel.emit('reachEnd toEdge');\r\n  }\r\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\r\n    carousel.emit('fromEdge');\r\n  }\r\n\r\n  carousel.emit('progress', progress);\r\n}\r\n","//@ts-nocheck\r\nexport default function updateSlidesClasses() {\r\n  const carousel = this;\r\n\r\n  const { slides, params, $wrapperEl, activeIndex, realIndex } = carousel;\r\n  const isVirtual = carousel.virtual && params.virtual.enabled;\r\n\r\n  slides.removeClass(\r\n    `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`\r\n  );\r\n\r\n  let activeSlide;\r\n  if (isVirtual) {\r\n    activeSlide = carousel.$wrapperEl.find(\r\n      `.${params.slideClass}[data-carousel-slide-index=\"${activeIndex}\"]`\r\n    );\r\n  } else {\r\n    activeSlide = slides.eq(activeIndex);\r\n  }\r\n\r\n  // Active classes\r\n  activeSlide.addClass(params.slideActiveClass);\r\n\r\n  if (params.loop) {\r\n    // Duplicate to all looped slides\r\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-carousel-slide-index=\"${realIndex}\"]`\r\n        )\r\n        .addClass(params.slideDuplicateActiveClass);\r\n    } else {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}.${params.slideDuplicateClass}[data-carousel-slide-index=\"${realIndex}\"]`\r\n        )\r\n        .addClass(params.slideDuplicateActiveClass);\r\n    }\r\n  }\r\n  // Next Slide\r\n  let nextSlide = activeSlide\r\n    .nextAll(`.${params.slideClass}`)\r\n    .eq(0)\r\n    .addClass(params.slideNextClass);\r\n  if (params.loop && nextSlide.length === 0) {\r\n    nextSlide = slides.eq(0);\r\n    nextSlide.addClass(params.slideNextClass);\r\n  }\r\n  // Prev Slide\r\n  let prevSlide = activeSlide\r\n    .prevAll(`.${params.slideClass}`)\r\n    .eq(0)\r\n    .addClass(params.slidePrevClass);\r\n  if (params.loop && prevSlide.length === 0) {\r\n    prevSlide = slides.eq(-1);\r\n    prevSlide.addClass(params.slidePrevClass);\r\n  }\r\n  if (params.loop) {\r\n    // Duplicate to all looped slides\r\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}:not(.${\r\n            params.slideDuplicateClass\r\n          })[data-carousel-slide-index=\"${nextSlide.attr('data-carousel-slide-index')}\"]`\r\n        )\r\n        .addClass(params.slideDuplicateNextClass);\r\n    } else {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}.${\r\n            params.slideDuplicateClass\r\n          }[data-carousel-slide-index=\"${nextSlide.attr('data-carousel-slide-index')}\"]`\r\n        )\r\n        .addClass(params.slideDuplicateNextClass);\r\n    }\r\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}:not(.${\r\n            params.slideDuplicateClass\r\n          })[data-carousel-slide-index=\"${prevSlide.attr('data-carousel-slide-index')}\"]`\r\n        )\r\n        .addClass(params.slideDuplicatePrevClass);\r\n    } else {\r\n      $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}.${\r\n            params.slideDuplicateClass\r\n          }[data-carousel-slide-index=\"${prevSlide.attr('data-carousel-slide-index')}\"]`\r\n        )\r\n        .addClass(params.slideDuplicatePrevClass);\r\n    }\r\n  }\r\n  carousel.emitSlidesClasses();\r\n}\r\n","//@ts-nocheck\r\nexport default function updateActiveIndex(newActiveIndex) {\r\n  const carousel = this;\r\n  const translate = carousel.rtlTranslate ? carousel.translate : -carousel.translate;\r\n  const {\r\n    slidesGrid,\r\n    snapGrid,\r\n    params,\r\n    activeIndex: previousIndex,\r\n    realIndex: previousRealIndex,\r\n    snapIndex: previousSnapIndex\r\n  } = carousel;\r\n  let activeIndex = newActiveIndex;\r\n  let snapIndex;\r\n  if (typeof activeIndex === 'undefined') {\r\n    for (let i = 0; i < slidesGrid.length; i += 1) {\r\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\r\n        if (\r\n          translate >= slidesGrid[i] &&\r\n          translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\r\n        ) {\r\n          activeIndex = i;\r\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\r\n          activeIndex = i + 1;\r\n        }\r\n      } else if (translate >= slidesGrid[i]) {\r\n        activeIndex = i;\r\n      }\r\n    }\r\n    // Normalize slideIndex\r\n    if (params.normalizeSlideIndex) {\r\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\r\n    }\r\n  }\r\n  if (snapGrid.indexOf(translate) >= 0) {\r\n    snapIndex = snapGrid.indexOf(translate);\r\n  } else {\r\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\r\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\r\n  }\r\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\r\n  if (activeIndex === previousIndex) {\r\n    if (snapIndex !== previousSnapIndex) {\r\n      carousel.snapIndex = snapIndex;\r\n      carousel.emit('snapIndexChange');\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Get real index\r\n  const realIndex = parseInt(\r\n    carousel.slides.eq(activeIndex).attr('data-carousel-slide-index') || activeIndex,\r\n    10\r\n  );\r\n\r\n  Object.assign(carousel, {\r\n    snapIndex,\r\n    realIndex,\r\n    previousIndex,\r\n    activeIndex\r\n  });\r\n  carousel.emit('activeIndexChange');\r\n  carousel.emit('snapIndexChange');\r\n  carousel.emit('realIndexChange');\r\n\r\n  if (carousel.initialized || carousel.params.runCallbacksOnInit) {\r\n    carousel.emit('slideChange');\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../shared/dom';\r\n\r\nexport default function updateClickedSlide(e) {\r\n  const carousel = this;\r\n  const params = carousel.params;\r\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\r\n  let slideFound = false;\r\n  let slideIndex;\r\n\r\n  if (slide) {\r\n    for (let i = 0; i < carousel.slides.length; i += 1) {\r\n      if (carousel.slides[i] === slide) {\r\n        slideFound = true;\r\n        slideIndex = i;\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (slide && slideFound) {\r\n    carousel.clickedSlide = slide;\r\n    if (carousel.virtual && carousel.params.virtual.enabled) {\r\n      carousel.clickedIndex = parseInt($(slide).attr('data-carousel-slide-index'), 10);\r\n    } else {\r\n      carousel.clickedIndex = slideIndex;\r\n    }\r\n  } else {\r\n    carousel.clickedSlide = undefined;\r\n    carousel.clickedIndex = undefined;\r\n    return;\r\n  }\r\n  if (\r\n    params.slideToClickedSlide &&\r\n    carousel.clickedIndex !== undefined &&\r\n    carousel.clickedIndex !== carousel.activeIndex\r\n  ) {\r\n    carousel.slideToClickedSlide();\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport updateSize from './updateSize';\r\nimport updateSlides from './updateSlides';\r\nimport updateAutoHeight from './updateAutoHeight';\r\nimport updateSlidesOffset from './updateSlidesOffset';\r\nimport updateSlidesProgress from './updateSlidesProgress';\r\nimport updateProgress from './updateProgress';\r\nimport updateSlidesClasses from './updateSlidesClasses';\r\nimport updateActiveIndex from './updateActiveIndex';\r\nimport updateClickedSlide from './updateClickedSlide';\r\n\r\nexport default {\r\n  updateSize,\r\n  updateSlides,\r\n  updateAutoHeight,\r\n  updateSlidesOffset,\r\n  updateSlidesProgress,\r\n  updateProgress,\r\n  updateSlidesClasses,\r\n  updateActiveIndex,\r\n  updateClickedSlide\r\n};\r\n","//@ts-nocheck\r\nimport { getTranslate } from '../../shared/utils';\r\n\r\nexport default function getcarouselTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\r\n  const carousel = this;\r\n\r\n  const { params, rtlTranslate: rtl, translate, $wrapperEl } = carousel;\r\n\r\n  if (params.virtualTranslate) {\r\n    return rtl ? -translate : translate;\r\n  }\r\n  if (params.cssMode) {\r\n    return translate;\r\n  }\r\n\r\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\r\n  if (rtl) currentTranslate = -currentTranslate;\r\n\r\n  return currentTranslate || 0;\r\n}\r\n","//@ts-nocheck\r\nexport default function setTranslate(translate, byController) {\r\n  const carousel = this;\r\n  const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = carousel;\r\n  let x = 0;\r\n  let y = 0;\r\n  const z = 0;\r\n\r\n  if (carousel.isHorizontal()) {\r\n    x = rtl ? -translate : translate;\r\n  } else {\r\n    y = translate;\r\n  }\r\n\r\n  if (params.roundLengths) {\r\n    x = Math.floor(x);\r\n    y = Math.floor(y);\r\n  }\r\n\r\n  if (params.cssMode) {\r\n    wrapperEl[carousel.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = carousel.isHorizontal()\r\n      ? -x\r\n      : -y;\r\n  } else if (!params.virtualTranslate) {\r\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\r\n  }\r\n  carousel.previousTranslate = carousel.translate;\r\n  carousel.translate = carousel.isHorizontal() ? x : y;\r\n\r\n  // Check if we need to update progress\r\n  let newProgress;\r\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\r\n  if (translatesDiff === 0) {\r\n    newProgress = 0;\r\n  } else {\r\n    newProgress = (translate - carousel.minTranslate()) / translatesDiff;\r\n  }\r\n  if (newProgress !== progress) {\r\n    carousel.updateProgress(translate);\r\n  }\r\n\r\n  carousel.emit('setTranslate', carousel.translate, byController);\r\n}\r\n","//@ts-nocheck\r\nexport default function minTranslate() {\r\n  return -this.snapGrid[0];\r\n}\r\n","//@ts-nocheck\r\nexport default function maxTranslate() {\r\n  return -this.snapGrid[this.snapGrid.length - 1];\r\n}\r\n","//@ts-nocheck\r\nimport { animateCSSModeScroll } from '../../shared/utils';\r\n\r\nexport default function translateTo(\r\n  translate = 0,\r\n  speed = this.params.speed,\r\n  runCallbacks = true,\r\n  translateBounds = true,\r\n  internal\r\n) {\r\n  const carousel = this;\r\n\r\n  const { params, wrapperEl } = carousel;\r\n\r\n  if (carousel.animating && params.preventInteractionOnTransition) {\r\n    return false;\r\n  }\r\n\r\n  const minTranslate = carousel.minTranslate();\r\n  const maxTranslate = carousel.maxTranslate();\r\n  let newTranslate;\r\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\r\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\r\n  else newTranslate = translate;\r\n\r\n  // Update progress\r\n  carousel.updateProgress(newTranslate);\r\n\r\n  if (params.cssMode) {\r\n    const isH = carousel.isHorizontal();\r\n    if (speed === 0) {\r\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\r\n    } else {\r\n      if (!carousel.support.smoothScroll) {\r\n        animateCSSModeScroll({\r\n          carousel,\r\n          targetPosition: -newTranslate,\r\n          side: isH ? 'left' : 'top'\r\n        });\r\n        return true;\r\n      }\r\n      wrapperEl.scrollTo({\r\n        [isH ? 'left' : 'top']: -newTranslate,\r\n        behavior: 'smooth'\r\n      });\r\n    }\r\n    return true;\r\n  }\r\n\r\n  if (speed === 0) {\r\n    carousel.setTransition(0);\r\n    carousel.setTranslate(newTranslate);\r\n    if (runCallbacks) {\r\n      carousel.emit('beforeTransitionStart', speed, internal);\r\n      carousel.emit('transitionEnd');\r\n    }\r\n  } else {\r\n    carousel.setTransition(speed);\r\n    carousel.setTranslate(newTranslate);\r\n    if (runCallbacks) {\r\n      carousel.emit('beforeTransitionStart', speed, internal);\r\n      carousel.emit('transitionStart');\r\n    }\r\n    if (!carousel.animating) {\r\n      carousel.animating = true;\r\n      if (!carousel.onTranslateToWrapperTransitionEnd) {\r\n        carousel.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\r\n          if (!carousel || carousel.destroyed) return;\r\n          if (e.target !== this) return;\r\n          carousel.$wrapperEl[0].removeEventListener(\r\n            'transitionend',\r\n            carousel.onTranslateToWrapperTransitionEnd\r\n          );\r\n          carousel.$wrapperEl[0].removeEventListener(\r\n            'webkitTransitionEnd',\r\n            carousel.onTranslateToWrapperTransitionEnd\r\n          );\r\n          carousel.onTranslateToWrapperTransitionEnd = null;\r\n          delete carousel.onTranslateToWrapperTransitionEnd;\r\n          if (runCallbacks) {\r\n            carousel.emit('transitionEnd');\r\n          }\r\n        };\r\n      }\r\n      carousel.$wrapperEl[0].addEventListener(\r\n        'transitionend',\r\n        carousel.onTranslateToWrapperTransitionEnd\r\n      );\r\n      carousel.$wrapperEl[0].addEventListener(\r\n        'webkitTransitionEnd',\r\n        carousel.onTranslateToWrapperTransitionEnd\r\n      );\r\n    }\r\n  }\r\n\r\n  return true;\r\n}\r\n","//@ts-nocheck\r\nimport getTranslate from './getTranslate';\r\nimport setTranslate from './setTranslate';\r\nimport minTranslate from './minTranslate';\r\nimport maxTranslate from './maxTranslate';\r\nimport translateTo from './translateTo';\r\n\r\nexport default {\r\n  getTranslate,\r\n  setTranslate,\r\n  minTranslate,\r\n  maxTranslate,\r\n  translateTo\r\n};\r\n","//@ts-nocheck\r\nexport default function setTransition(duration, byController) {\r\n  const carousel = this;\r\n\r\n  if (!carousel.params.cssMode) {\r\n    carousel.$wrapperEl.transition(duration);\r\n  }\r\n\r\n  carousel.emit('setTransition', duration, byController);\r\n}\r\n","//@ts-nocheck\r\nexport default function transitionEmit({ carousel, runCallbacks, direction, step }) {\r\n  const { activeIndex, previousIndex } = carousel;\r\n  let dir = direction;\r\n  if (!dir) {\r\n    if (activeIndex > previousIndex) dir = 'next';\r\n    else if (activeIndex < previousIndex) dir = 'prev';\r\n    else dir = 'reset';\r\n  }\r\n\r\n  carousel.emit(`transition${step}`);\r\n\r\n  if (runCallbacks && activeIndex !== previousIndex) {\r\n    if (dir === 'reset') {\r\n      carousel.emit(`slideResetTransition${step}`);\r\n      return;\r\n    }\r\n    carousel.emit(`slideChangeTransition${step}`);\r\n    if (dir === 'next') {\r\n      carousel.emit(`slideNextTransition${step}`);\r\n    } else {\r\n      carousel.emit(`slidePrevTransition${step}`);\r\n    }\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport transitionEmit from './transitionEmit';\r\n\r\nexport default function transitionStart(runCallbacks = true, direction) {\r\n  const carousel = this;\r\n  const { params } = carousel;\r\n  if (params.cssMode) return;\r\n  if (params.autoHeight) {\r\n    carousel.updateAutoHeight();\r\n  }\r\n\r\n  transitionEmit({ carousel, runCallbacks, direction, step: 'Start' });\r\n}\r\n","//@ts-nocheck\r\nimport transitionEmit from './transitionEmit';\r\n\r\nexport default function transitionEnd(runCallbacks = true, direction) {\r\n  const carousel = this;\r\n  const { params } = carousel;\r\n  carousel.animating = false;\r\n  if (params.cssMode) return;\r\n  carousel.setTransition(0);\r\n\r\n  transitionEmit({ carousel, runCallbacks, direction, step: 'End' });\r\n}\r\n","//@ts-nocheck\r\nimport setTransition from './setTransition';\r\nimport transitionStart from './transitionStart';\r\nimport transitionEnd from './transitionEnd';\r\n\r\nexport default {\r\n  setTransition,\r\n  transitionStart,\r\n  transitionEnd\r\n};\r\n","//@ts-nocheck\r\nimport { animateCSSModeScroll } from '../../shared/utils';\r\n\r\nexport default function slideTo(\r\n  index = 0,\r\n  speed = this.params.speed,\r\n  runCallbacks = true,\r\n  internal,\r\n  initial\r\n) {\r\n  if (typeof index !== 'number' && typeof index !== 'string') {\r\n    throw new Error(\r\n      `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`\r\n    );\r\n  }\r\n\r\n  if (typeof index === 'string') {\r\n    /**\r\n     * The `index` argument converted from `string` to `number`.\r\n     * @type {number}\r\n     */\r\n    const indexAsNumber = parseInt(index, 10);\r\n\r\n    /**\r\n     * Determines whether the `index` argument is a valid `number`\r\n     * after being converted from the `string` type.\r\n     * @type {boolean}\r\n     */\r\n    const isValidNumber = isFinite(indexAsNumber);\r\n\r\n    if (!isValidNumber) {\r\n      throw new Error(\r\n        `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`\r\n      );\r\n    }\r\n\r\n    // Knowing that the converted `index` is a valid number,\r\n    // we can update the original argument's value.\r\n    index = indexAsNumber;\r\n  }\r\n\r\n  const carousel = this;\r\n  let slideIndex = index;\r\n  if (slideIndex < 0) slideIndex = 0;\r\n\r\n  const {\r\n    params,\r\n    snapGrid,\r\n    slidesGrid,\r\n    previousIndex,\r\n    activeIndex,\r\n    rtlTranslate: rtl,\r\n    wrapperEl,\r\n    enabled\r\n  } = carousel;\r\n\r\n  if (\r\n    (carousel.animating && params.preventInteractionOnTransition) ||\r\n    (!enabled && !internal && !initial)\r\n  ) {\r\n    return false;\r\n  }\r\n\r\n  const skip = Math.min(carousel.params.slidesPerGroupSkip, slideIndex);\r\n  let snapIndex = skip + Math.floor((slideIndex - skip) / carousel.params.slidesPerGroup);\r\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\r\n\r\n  const translate = -snapGrid[snapIndex];\r\n\r\n  // Normalize slideIndex\r\n  if (params.normalizeSlideIndex) {\r\n    for (let i = 0; i < slidesGrid.length; i += 1) {\r\n      const normalizedTranslate = -Math.floor(translate * 100);\r\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\r\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\r\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\r\n        if (\r\n          normalizedTranslate >= normalizedGrid &&\r\n          normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\r\n        ) {\r\n          slideIndex = i;\r\n        } else if (\r\n          normalizedTranslate >= normalizedGrid &&\r\n          normalizedTranslate < normalizedGridNext\r\n        ) {\r\n          slideIndex = i + 1;\r\n        }\r\n      } else if (normalizedTranslate >= normalizedGrid) {\r\n        slideIndex = i;\r\n      }\r\n    }\r\n  }\r\n  // Directions locks\r\n  if (carousel.initialized && slideIndex !== activeIndex) {\r\n    if (\r\n      !carousel.allowSlideNext &&\r\n      translate < carousel.translate &&\r\n      translate < carousel.minTranslate()\r\n    ) {\r\n      return false;\r\n    }\r\n    if (\r\n      !carousel.allowSlidePrev &&\r\n      translate > carousel.translate &&\r\n      translate > carousel.maxTranslate()\r\n    ) {\r\n      if ((activeIndex || 0) !== slideIndex) return false;\r\n    }\r\n  }\r\n\r\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\r\n    carousel.emit('beforeSlideChangeStart');\r\n  }\r\n\r\n  // Update progress\r\n  carousel.updateProgress(translate);\r\n\r\n  let direction;\r\n  if (slideIndex > activeIndex) direction = 'next';\r\n  else if (slideIndex < activeIndex) direction = 'prev';\r\n  else direction = 'reset';\r\n\r\n  // Update Index\r\n  if ((rtl && -translate === carousel.translate) || (!rtl && translate === carousel.translate)) {\r\n    carousel.updateActiveIndex(slideIndex);\r\n    // Update Height\r\n    if (params.autoHeight) {\r\n      carousel.updateAutoHeight();\r\n    }\r\n    carousel.updateSlidesClasses();\r\n    if (params.effect !== 'slide') {\r\n      carousel.setTranslate(translate);\r\n    }\r\n    if (direction !== 'reset') {\r\n      carousel.transitionStart(runCallbacks, direction);\r\n      carousel.transitionEnd(runCallbacks, direction);\r\n    }\r\n    return false;\r\n  }\r\n  if (params.cssMode) {\r\n    const isH = carousel.isHorizontal();\r\n    const t = rtl ? translate : -translate;\r\n    if (speed === 0) {\r\n      const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\r\n      if (isVirtual) {\r\n        carousel.wrapperEl.style.scrollSnapType = 'none';\r\n        carousel._immediateVirtual = true;\r\n      }\r\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\r\n      if (isVirtual) {\r\n        requestAnimationFrame(() => {\r\n          carousel.wrapperEl.style.scrollSnapType = '';\r\n          carousel._carouselImmediateVirtual = false;\r\n        });\r\n      }\r\n    } else {\r\n      if (!carousel.support.smoothScroll) {\r\n        animateCSSModeScroll({ carousel, targetPosition: t, side: isH ? 'left' : 'top' });\r\n        return true;\r\n      }\r\n      wrapperEl.scrollTo({\r\n        [isH ? 'left' : 'top']: t,\r\n        behavior: 'smooth'\r\n      });\r\n    }\r\n    return true;\r\n  }\r\n\r\n  carousel.setTransition(speed);\r\n  carousel.setTranslate(translate);\r\n  carousel.updateActiveIndex(slideIndex);\r\n  carousel.updateSlidesClasses();\r\n  carousel.emit('beforeTransitionStart', speed, internal);\r\n  carousel.transitionStart(runCallbacks, direction);\r\n\r\n  if (speed === 0) {\r\n    carousel.transitionEnd(runCallbacks, direction);\r\n  } else if (!carousel.animating) {\r\n    carousel.animating = true;\r\n    if (!carousel.onSlideToWrapperTransitionEnd) {\r\n      carousel.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\r\n        if (!carousel || carousel.destroyed) return;\r\n        if (e.target !== this) return;\r\n        carousel.$wrapperEl[0].removeEventListener(\r\n          'transitionend',\r\n          carousel.onSlideToWrapperTransitionEnd\r\n        );\r\n        carousel.$wrapperEl[0].removeEventListener(\r\n          'webkitTransitionEnd',\r\n          carousel.onSlideToWrapperTransitionEnd\r\n        );\r\n        carousel.onSlideToWrapperTransitionEnd = null;\r\n        delete carousel.onSlideToWrapperTransitionEnd;\r\n        carousel.transitionEnd(runCallbacks, direction);\r\n      };\r\n    }\r\n    carousel.$wrapperEl[0].addEventListener(\r\n      'transitionend',\r\n      carousel.onSlideToWrapperTransitionEnd\r\n    );\r\n    carousel.$wrapperEl[0].addEventListener(\r\n      'webkitTransitionEnd',\r\n      carousel.onSlideToWrapperTransitionEnd\r\n    );\r\n  }\r\n\r\n  return true;\r\n}\r\n","//@ts-nocheck\r\nexport default function slideToLoop(\r\n  index = 0,\r\n  speed = this.params.speed,\r\n  runCallbacks = true,\r\n  internal\r\n) {\r\n  if (typeof index === 'string') {\r\n    /**\r\n     * The `index` argument converted from `string` to `number`.\r\n     * @type {number}\r\n     */\r\n    const indexAsNumber = parseInt(index, 10);\r\n\r\n    /**\r\n     * Determines whether the `index` argument is a valid `number`\r\n     * after being converted from the `string` type.\r\n     * @type {boolean}\r\n     */\r\n    const isValidNumber = isFinite(indexAsNumber);\r\n\r\n    if (!isValidNumber) {\r\n      throw new Error(\r\n        `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`\r\n      );\r\n    }\r\n\r\n    // Knowing that the converted `index` is a valid number,\r\n    // we can update the original argument's value.\r\n    index = indexAsNumber;\r\n  }\r\n\r\n  const carousel = this;\r\n  let newIndex = index;\r\n  if (carousel.params.loop) {\r\n    newIndex += carousel.loopedSlides;\r\n  }\r\n\r\n  return carousel.slideTo(newIndex, speed, runCallbacks, internal);\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-unused-vars: \"off\" */\r\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\r\n  const carousel = this;\r\n  const { animating, enabled, params } = carousel;\r\n  if (!enabled) return carousel;\r\n  let perGroup = params.slidesPerGroup;\r\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\r\n    perGroup = Math.max(carousel.slidesPerViewDynamic('current', true), 1);\r\n  }\r\n  const increment = carousel.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\r\n  if (params.loop) {\r\n    if (animating && params.loopPreventsSlide) return false;\r\n    carousel.loopFix();\r\n    // eslint-disable-next-line\r\n    carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\r\n  }\r\n  if (params.rewind && carousel.isEnd) {\r\n    return carousel.slideTo(0, speed, runCallbacks, internal);\r\n  }\r\n  return carousel.slideTo(carousel.activeIndex + increment, speed, runCallbacks, internal);\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-unused-vars: \"off\" */\r\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\r\n  const carousel = this;\r\n  const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = carousel;\r\n  if (!enabled) return carousel;\r\n\r\n  if (params.loop) {\r\n    if (animating && params.loopPreventsSlide) return false;\r\n    carousel.loopFix();\r\n    // eslint-disable-next-line\r\n    carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\r\n  }\r\n  const translate = rtlTranslate ? carousel.translate : -carousel.translate;\r\n\r\n  function normalize(val) {\r\n    if (val < 0) return -Math.floor(Math.abs(val));\r\n    return Math.floor(val);\r\n  }\r\n  const normalizedTranslate = normalize(translate);\r\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\r\n\r\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\r\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\r\n    let prevSnapIndex;\r\n    snapGrid.forEach((snap, snapIndex) => {\r\n      if (normalizedTranslate >= snap) {\r\n        // prevSnap = snap;\r\n        prevSnapIndex = snapIndex;\r\n      }\r\n    });\r\n    if (typeof prevSnapIndex !== 'undefined') {\r\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\r\n    }\r\n  }\r\n  let prevIndex = 0;\r\n  if (typeof prevSnap !== 'undefined') {\r\n    prevIndex = slidesGrid.indexOf(prevSnap);\r\n    if (prevIndex < 0) prevIndex = carousel.activeIndex - 1;\r\n    if (\r\n      params.slidesPerView === 'auto' &&\r\n      params.slidesPerGroup === 1 &&\r\n      params.slidesPerGroupAuto\r\n    ) {\r\n      prevIndex = prevIndex - carousel.slidesPerViewDynamic('previous', true) + 1;\r\n      prevIndex = Math.max(prevIndex, 0);\r\n    }\r\n  }\r\n  if (params.rewind && carousel.isBeginning) {\r\n    const lastIndex =\r\n      carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual\r\n        ? carousel.virtual.slides.length - 1\r\n        : carousel.slides.length - 1;\r\n    return carousel.slideTo(lastIndex, speed, runCallbacks, internal);\r\n  }\r\n  return carousel.slideTo(prevIndex, speed, runCallbacks, internal);\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-unused-vars: \"off\" */\r\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\r\n  const carousel = this;\r\n  return carousel.slideTo(carousel.activeIndex, speed, runCallbacks, internal);\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-unused-vars: \"off\" */\r\nexport default function slideToClosest(\r\n  speed = this.params.speed,\r\n  runCallbacks = true,\r\n  internal,\r\n  threshold = 0.5\r\n) {\r\n  const carousel = this;\r\n  let index = carousel.activeIndex;\r\n  const skip = Math.min(carousel.params.slidesPerGroupSkip, index);\r\n  const snapIndex = skip + Math.floor((index - skip) / carousel.params.slidesPerGroup);\r\n\r\n  const translate = carousel.rtlTranslate ? carousel.translate : -carousel.translate;\r\n\r\n  if (translate >= carousel.snapGrid[snapIndex]) {\r\n    // The current translate is on or after the current snap index, so the choice\r\n    // is between the current index and the one after it.\r\n    const currentSnap = carousel.snapGrid[snapIndex];\r\n    const nextSnap = carousel.snapGrid[snapIndex + 1];\r\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\r\n      index += carousel.params.slidesPerGroup;\r\n    }\r\n  } else {\r\n    // The current translate is before the current snap index, so the choice\r\n    // is between the current index and the one before it.\r\n    const prevSnap = carousel.snapGrid[snapIndex - 1];\r\n    const currentSnap = carousel.snapGrid[snapIndex];\r\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\r\n      index -= carousel.params.slidesPerGroup;\r\n    }\r\n  }\r\n  index = Math.max(index, 0);\r\n  index = Math.min(index, carousel.slidesGrid.length - 1);\r\n\r\n  return carousel.slideTo(index, speed, runCallbacks, internal);\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../shared/dom';\r\nimport { nextTick } from '../../shared/utils';\r\n\r\nexport default function slideToClickedSlide() {\r\n  const carousel = this;\r\n  const { params, $wrapperEl } = carousel;\r\n\r\n  const slidesPerView =\r\n    params.slidesPerView === 'auto' ? carousel.slidesPerViewDynamic() : params.slidesPerView;\r\n  let slideToIndex = carousel.clickedIndex;\r\n  let realIndex;\r\n  if (params.loop) {\r\n    if (carousel.animating) return;\r\n    realIndex = parseInt($(carousel.clickedSlide).attr('data-carousel-slide-index'), 10);\r\n    if (params.centeredSlides) {\r\n      if (\r\n        slideToIndex < carousel.loopedSlides - slidesPerView / 2 ||\r\n        slideToIndex > carousel.slides.length - carousel.loopedSlides + slidesPerView / 2\r\n      ) {\r\n        carousel.loopFix();\r\n        slideToIndex = $wrapperEl\r\n          .children(\r\n            `.${params.slideClass}[data-carousel-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`\r\n          )\r\n          .eq(0)\r\n          .index();\r\n\r\n        nextTick(() => {\r\n          carousel.slideTo(slideToIndex);\r\n        });\r\n      } else {\r\n        carousel.slideTo(slideToIndex);\r\n      }\r\n    } else if (slideToIndex > carousel.slides.length - slidesPerView) {\r\n      carousel.loopFix();\r\n      slideToIndex = $wrapperEl\r\n        .children(\r\n          `.${params.slideClass}[data-carousel-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`\r\n        )\r\n        .eq(0)\r\n        .index();\r\n\r\n      nextTick(() => {\r\n        carousel.slideTo(slideToIndex);\r\n      });\r\n    } else {\r\n      carousel.slideTo(slideToIndex);\r\n    }\r\n  } else {\r\n    carousel.slideTo(slideToIndex);\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport slideTo from './slideTo';\r\nimport slideToLoop from './slideToLoop';\r\nimport slideNext from './slideNext';\r\nimport slidePrev from './slidePrev';\r\nimport slideReset from './slideReset';\r\nimport slideToClosest from './slideToClosest';\r\nimport slideToClickedSlide from './slideToClickedSlide';\r\n\r\nexport default {\r\n  slideTo,\r\n  slideToLoop,\r\n  slideNext,\r\n  slidePrev,\r\n  slideReset,\r\n  slideToClosest,\r\n  slideToClickedSlide\r\n};\r\n","//@ts-nocheck\r\nimport { getDocument } from 'ssr-window';\r\nimport $ from '../../shared/dom';\r\n\r\nexport default function loopCreate() {\r\n  const carousel = this;\r\n  const document = getDocument();\r\n  const { params, $wrapperEl } = carousel;\r\n  // Remove duplicated slides\r\n  const $selector =\r\n    $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\r\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\r\n\r\n  let slides = $selector.children(`.${params.slideClass}`);\r\n\r\n  if (params.loopFillGroupWithBlank) {\r\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\r\n    if (blankSlidesNum !== params.slidesPerGroup) {\r\n      for (let i = 0; i < blankSlidesNum; i += 1) {\r\n        const blankNode = $(document.createElement('div')).addClass(\r\n          `${params.slideClass} ${params.slideBlankClass}`\r\n        );\r\n        $selector.append(blankNode);\r\n      }\r\n      slides = $selector.children(`.${params.slideClass}`);\r\n    }\r\n  }\r\n\r\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\r\n\r\n  carousel.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\r\n  carousel.loopedSlides += params.loopAdditionalSlides;\r\n  if (carousel.loopedSlides > slides.length && carousel.params.loopedSlidesLimit) {\r\n    carousel.loopedSlides = slides.length;\r\n  }\r\n\r\n  const prependSlides = [];\r\n  const appendSlides = [];\r\n\r\n  slides.each((el, index) => {\r\n    const slide = $(el);\r\n    slide.attr('data-carousel-slide-index', index);\r\n  });\r\n\r\n  for (let i = 0; i < carousel.loopedSlides; i += 1) {\r\n    const index = i - Math.floor(i / slides.length) * slides.length;\r\n    appendSlides.push(slides.eq(index)[0]);\r\n    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\r\n  }\r\n\r\n  for (let i = 0; i < appendSlides.length; i += 1) {\r\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\r\n  }\r\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\r\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function loopFix() {\r\n  const carousel = this;\r\n\r\n  carousel.emit('beforeLoopFix');\r\n\r\n  const {\r\n    activeIndex,\r\n    slides,\r\n    loopedSlides,\r\n    allowSlidePrev,\r\n    allowSlideNext,\r\n    snapGrid,\r\n    rtlTranslate: rtl\r\n  } = carousel;\r\n  let newIndex;\r\n  carousel.allowSlidePrev = true;\r\n  carousel.allowSlideNext = true;\r\n\r\n  const snapTranslate = -snapGrid[activeIndex];\r\n  const diff = snapTranslate - carousel.getTranslate();\r\n\r\n  // Fix For Negative Oversliding\r\n  if (activeIndex < loopedSlides) {\r\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\r\n    newIndex += loopedSlides;\r\n    const slideChanged = carousel.slideTo(newIndex, 0, false, true);\r\n    if (slideChanged && diff !== 0) {\r\n      carousel.setTranslate((rtl ? -carousel.translate : carousel.translate) - diff);\r\n    }\r\n  } else if (activeIndex >= slides.length - loopedSlides) {\r\n    // Fix For Positive Oversliding\r\n    newIndex = -slides.length + activeIndex + loopedSlides;\r\n    newIndex += loopedSlides;\r\n    const slideChanged = carousel.slideTo(newIndex, 0, false, true);\r\n    if (slideChanged && diff !== 0) {\r\n      carousel.setTranslate((rtl ? -carousel.translate : carousel.translate) - diff);\r\n    }\r\n  }\r\n  carousel.allowSlidePrev = allowSlidePrev;\r\n  carousel.allowSlideNext = allowSlideNext;\r\n\r\n  carousel.emit('loopFix');\r\n}\r\n","//@ts-nocheck\r\nexport default function loopDestroy() {\r\n  const carousel = this;\r\n  const { $wrapperEl, params, slides } = carousel;\r\n  $wrapperEl\r\n    .children(\r\n      `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`\r\n    )\r\n    .remove();\r\n  slides.removeAttr('data-carousel-slide-index');\r\n}\r\n","//@ts-nocheck\r\nimport loopCreate from './loopCreate';\r\nimport loopFix from './loopFix';\r\nimport loopDestroy from './loopDestroy';\r\n\r\nexport default {\r\n  loopCreate,\r\n  loopFix,\r\n  loopDestroy\r\n};\r\n","//@ts-nocheck\r\nexport default function setGrabCursor(moving) {\r\n  const carousel = this;\r\n  if (\r\n    carousel.support.touch ||\r\n    !carousel.params.simulateTouch ||\r\n    (carousel.params.watchOverflow && carousel.isLocked) ||\r\n    carousel.params.cssMode\r\n  )\r\n    return;\r\n  const el = carousel.params.touchEventsTarget === 'container' ? carousel.el : carousel.wrapperEl;\r\n  el.style.cursor = 'move';\r\n  el.style.cursor = moving ? 'grabbing' : 'grab';\r\n}\r\n","//@ts-nocheck\r\nexport default function unsetGrabCursor() {\r\n  const carousel = this;\r\n  if (\r\n    carousel.support.touch ||\r\n    (carousel.params.watchOverflow && carousel.isLocked) ||\r\n    carousel.params.cssMode\r\n  ) {\r\n    return;\r\n  }\r\n  carousel[carousel.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor =\r\n    '';\r\n}\r\n","//@ts-nocheck\r\nimport setGrabCursor from './setGrabCursor';\r\nimport unsetGrabCursor from './unsetGrabCursor';\r\n\r\nexport default {\r\n  setGrabCursor,\r\n  unsetGrabCursor\r\n};\r\n","//@ts-nocheck\r\nimport { getWindow, getDocument } from 'ssr-window';\r\nimport $ from '../../shared/dom';\r\nimport { now } from '../../shared/utils';\r\n\r\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\r\nfunction closestElement(selector, base = this) {\r\n  function __closestFrom(el) {\r\n    if (!el || el === getDocument() || el === getWindow()) return null;\r\n    if (el.assignedSlot) el = el.assignedSlot;\r\n    const found = el.closest(selector);\r\n    if (!found && !el.getRootNode) {\r\n      return null;\r\n    }\r\n    return found || __closestFrom(el.getRootNode().host);\r\n  }\r\n  return __closestFrom(base);\r\n}\r\n\r\nexport default function onTouchStart(event) {\r\n  const carousel = this;\r\n  const document = getDocument();\r\n  const window = getWindow();\r\n\r\n  const data = carousel.touchEventsData;\r\n  const { params, touches, enabled } = carousel;\r\n  if (!enabled) return;\r\n\r\n  if (carousel.animating && params.preventInteractionOnTransition) {\r\n    return;\r\n  }\r\n  if (!carousel.animating && params.cssMode && params.loop) {\r\n    carousel.loopFix();\r\n  }\r\n  let e = event;\r\n  if (e.originalEvent) e = e.originalEvent;\r\n  let $targetEl = $(e.target);\r\n\r\n  if (params.touchEventsTarget === 'wrapper') {\r\n    if (!$targetEl.closest(carousel.wrapperEl).length) return;\r\n  }\r\n  data.isTouchEvent = e.type === 'touchstart';\r\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\r\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\r\n  if (data.isTouched && data.isMoved) return;\r\n\r\n  // change target el for shadow root component\r\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\r\n  // eslint-disable-next-line\r\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\r\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\r\n    $targetEl = $(eventPath[0]);\r\n  }\r\n\r\n  const noSwipingSelector = params.noSwipingSelector\r\n    ? params.noSwipingSelector\r\n    : `.${params.noSwipingClass}`;\r\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\r\n\r\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\r\n  if (\r\n    params.noSwiping &&\r\n    (isTargetShadow\r\n      ? closestElement(noSwipingSelector, $targetEl[0])\r\n      : $targetEl.closest(noSwipingSelector)[0])\r\n  ) {\r\n    carousel.allowClick = true;\r\n    return;\r\n  }\r\n\r\n  if (params.swipeHandler) {\r\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\r\n  }\r\n\r\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\r\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\r\n  const startX = touches.currentX;\r\n  const startY = touches.currentY;\r\n\r\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\r\n\r\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\r\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\r\n  if (\r\n    edgeSwipeDetection &&\r\n    (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\r\n  ) {\r\n    if (edgeSwipeDetection === 'prevent') {\r\n      event.preventDefault();\r\n    } else {\r\n      return;\r\n    }\r\n  }\r\n\r\n  Object.assign(data, {\r\n    isTouched: true,\r\n    isMoved: false,\r\n    allowTouchCallbacks: true,\r\n    isScrolling: undefined,\r\n    startMoving: undefined\r\n  });\r\n\r\n  touches.startX = startX;\r\n  touches.startY = startY;\r\n  data.touchStartTime = now();\r\n  carousel.allowClick = true;\r\n  carousel.updateSize();\r\n  carousel.swipeDirection = undefined;\r\n  if (params.threshold > 0) data.allowThresholdMove = false;\r\n  if (e.type !== 'touchstart') {\r\n    let preventDefault = true;\r\n    if ($targetEl.is(data.focusableElements)) {\r\n      preventDefault = false;\r\n      if ($targetEl[0].nodeName === 'SELECT') {\r\n        data.isTouched = false;\r\n      }\r\n    }\r\n    if (\r\n      document.activeElement &&\r\n      $(document.activeElement).is(data.focusableElements) &&\r\n      document.activeElement !== $targetEl[0]\r\n    ) {\r\n      document.activeElement.blur();\r\n    }\r\n\r\n    const shouldPreventDefault =\r\n      preventDefault && carousel.allowTouchMove && params.touchStartPreventDefault;\r\n    if (\r\n      (params.touchStartForcePreventDefault || shouldPreventDefault) &&\r\n      !$targetEl[0].isContentEditable\r\n    ) {\r\n      e.preventDefault();\r\n    }\r\n  }\r\n  if (\r\n    carousel.params.freeMode &&\r\n    carousel.params.freeMode.enabled &&\r\n    carousel.freeMode &&\r\n    carousel.animating &&\r\n    !params.cssMode\r\n  ) {\r\n    carousel.freeMode.onTouchStart();\r\n  }\r\n  carousel.emit('touchStart', e);\r\n}\r\n","//@ts-nocheck\r\nimport { getDocument } from 'ssr-window';\r\nimport $ from '../../shared/dom';\r\nimport { now } from '../../shared/utils';\r\n\r\nexport default function onTouchMove(event) {\r\n  const document = getDocument();\r\n  const carousel = this;\r\n  const data = carousel.touchEventsData;\r\n  const { params, touches, rtlTranslate: rtl, enabled } = carousel;\r\n  if (!enabled) return;\r\n  let e = event;\r\n  if (e.originalEvent) e = e.originalEvent;\r\n  if (!data.isTouched) {\r\n    if (data.startMoving && data.isScrolling) {\r\n      carousel.emit('touchMoveOpposite', e);\r\n    }\r\n    return;\r\n  }\r\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\r\n  const targetTouch =\r\n    e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\r\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\r\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\r\n  if (e.preventedByNestedcarousel) {\r\n    touches.startX = pageX;\r\n    touches.startY = pageY;\r\n    return;\r\n  }\r\n  if (!carousel.allowTouchMove) {\r\n    if (!$(e.target).is(data.focusableElements)) {\r\n      carousel.allowClick = false;\r\n    }\r\n    if (data.isTouched) {\r\n      Object.assign(touches, {\r\n        startX: pageX,\r\n        startY: pageY,\r\n        currentX: pageX,\r\n        currentY: pageY\r\n      });\r\n      data.touchStartTime = now();\r\n    }\r\n    return;\r\n  }\r\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\r\n    if (carousel.isVertical()) {\r\n      // Vertical\r\n      if (\r\n        (pageY < touches.startY && carousel.translate <= carousel.maxTranslate()) ||\r\n        (pageY > touches.startY && carousel.translate >= carousel.minTranslate())\r\n      ) {\r\n        data.isTouched = false;\r\n        data.isMoved = false;\r\n        return;\r\n      }\r\n    } else if (\r\n      (pageX < touches.startX && carousel.translate <= carousel.maxTranslate()) ||\r\n      (pageX > touches.startX && carousel.translate >= carousel.minTranslate())\r\n    ) {\r\n      return;\r\n    }\r\n  }\r\n  if (data.isTouchEvent && document.activeElement) {\r\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\r\n      data.isMoved = true;\r\n      carousel.allowClick = false;\r\n      return;\r\n    }\r\n  }\r\n  if (data.allowTouchCallbacks) {\r\n    carousel.emit('touchMove', e);\r\n  }\r\n  if (e.targetTouches && e.targetTouches.length > 1) return;\r\n\r\n  touches.currentX = pageX;\r\n  touches.currentY = pageY;\r\n\r\n  const diffX = touches.currentX - touches.startX;\r\n  const diffY = touches.currentY - touches.startY;\r\n  if (carousel.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < carousel.params.threshold)\r\n    return;\r\n\r\n  if (typeof data.isScrolling === 'undefined') {\r\n    let touchAngle;\r\n    if (\r\n      (carousel.isHorizontal() && touches.currentY === touches.startY) ||\r\n      (carousel.isVertical() && touches.currentX === touches.startX)\r\n    ) {\r\n      data.isScrolling = false;\r\n    } else {\r\n      // eslint-disable-next-line\r\n      if (diffX * diffX + diffY * diffY >= 25) {\r\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\r\n        data.isScrolling = carousel.isHorizontal()\r\n          ? touchAngle > params.touchAngle\r\n          : 90 - touchAngle > params.touchAngle;\r\n      }\r\n    }\r\n  }\r\n  if (data.isScrolling) {\r\n    carousel.emit('touchMoveOpposite', e);\r\n  }\r\n  if (typeof data.startMoving === 'undefined') {\r\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\r\n      data.startMoving = true;\r\n    }\r\n  }\r\n  if (data.isScrolling) {\r\n    data.isTouched = false;\r\n    return;\r\n  }\r\n  if (!data.startMoving) {\r\n    return;\r\n  }\r\n  carousel.allowClick = false;\r\n  if (!params.cssMode && e.cancelable) {\r\n    e.preventDefault();\r\n  }\r\n  if (params.touchMoveStopPropagation && !params.nested) {\r\n    e.stopPropagation();\r\n  }\r\n\r\n  if (!data.isMoved) {\r\n    if (params.loop && !params.cssMode) {\r\n      carousel.loopFix();\r\n    }\r\n    data.startTranslate = carousel.getTranslate();\r\n    carousel.setTransition(0);\r\n    if (carousel.animating) {\r\n      carousel.$wrapperEl.trigger('webkitTransitionEnd transitionend');\r\n    }\r\n    data.allowMomentumBounce = false;\r\n    // Grab Cursor\r\n    if (\r\n      params.grabCursor &&\r\n      (carousel.allowSlideNext === true || carousel.allowSlidePrev === true)\r\n    ) {\r\n      carousel.setGrabCursor(true);\r\n    }\r\n    carousel.emit('sliderFirstMove', e);\r\n  }\r\n  carousel.emit('sliderMove', e);\r\n  data.isMoved = true;\r\n\r\n  let diff = carousel.isHorizontal() ? diffX : diffY;\r\n  touches.diff = diff;\r\n\r\n  diff *= params.touchRatio;\r\n  if (rtl) diff = -diff;\r\n\r\n  carousel.swipeDirection = diff > 0 ? 'prev' : 'next';\r\n  data.currentTranslate = diff + data.startTranslate;\r\n\r\n  let disableParentcarousel = true;\r\n  let resistanceRatio = params.resistanceRatio;\r\n  if (params.touchReleaseOnEdges) {\r\n    resistanceRatio = 0;\r\n  }\r\n  if (diff > 0 && data.currentTranslate > carousel.minTranslate()) {\r\n    disableParentcarousel = false;\r\n    if (params.resistance)\r\n      data.currentTranslate =\r\n        carousel.minTranslate() -\r\n        1 +\r\n        (-carousel.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\r\n  } else if (diff < 0 && data.currentTranslate < carousel.maxTranslate()) {\r\n    disableParentcarousel = false;\r\n    if (params.resistance)\r\n      data.currentTranslate =\r\n        carousel.maxTranslate() +\r\n        1 -\r\n        (carousel.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\r\n  }\r\n\r\n  if (disableParentcarousel) {\r\n    e.preventedByNestedcarousel = true;\r\n  }\r\n\r\n  // Directions locks\r\n  if (\r\n    !carousel.allowSlideNext &&\r\n    carousel.swipeDirection === 'next' &&\r\n    data.currentTranslate < data.startTranslate\r\n  ) {\r\n    data.currentTranslate = data.startTranslate;\r\n  }\r\n  if (\r\n    !carousel.allowSlidePrev &&\r\n    carousel.swipeDirection === 'prev' &&\r\n    data.currentTranslate > data.startTranslate\r\n  ) {\r\n    data.currentTranslate = data.startTranslate;\r\n  }\r\n  if (!carousel.allowSlidePrev && !carousel.allowSlideNext) {\r\n    data.currentTranslate = data.startTranslate;\r\n  }\r\n\r\n  // Threshold\r\n  if (params.threshold > 0) {\r\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\r\n      if (!data.allowThresholdMove) {\r\n        data.allowThresholdMove = true;\r\n        touches.startX = touches.currentX;\r\n        touches.startY = touches.currentY;\r\n        data.currentTranslate = data.startTranslate;\r\n        touches.diff = carousel.isHorizontal()\r\n          ? touches.currentX - touches.startX\r\n          : touches.currentY - touches.startY;\r\n        return;\r\n      }\r\n    } else {\r\n      data.currentTranslate = data.startTranslate;\r\n      return;\r\n    }\r\n  }\r\n\r\n  if (!params.followFinger || params.cssMode) return;\r\n\r\n  // Update active index in free mode\r\n  if (\r\n    (params.freeMode && params.freeMode.enabled && carousel.freeMode) ||\r\n    params.watchSlidesProgress\r\n  ) {\r\n    carousel.updateActiveIndex();\r\n    carousel.updateSlidesClasses();\r\n  }\r\n  if (carousel.params.freeMode && params.freeMode.enabled && carousel.freeMode) {\r\n    carousel.freeMode.onTouchMove();\r\n  }\r\n  // Update progress\r\n  carousel.updateProgress(data.currentTranslate);\r\n  // Update translate\r\n  carousel.setTranslate(data.currentTranslate);\r\n}\r\n","//@ts-nocheck\r\nimport { now, nextTick } from '../../shared/utils';\r\n\r\nexport default function onTouchEnd(event) {\r\n  const carousel = this;\r\n  const data = carousel.touchEventsData;\r\n\r\n  const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = carousel;\r\n  if (!enabled) return;\r\n  let e = event;\r\n  if (e.originalEvent) e = e.originalEvent;\r\n  if (data.allowTouchCallbacks) {\r\n    carousel.emit('touchEnd', e);\r\n  }\r\n  data.allowTouchCallbacks = false;\r\n  if (!data.isTouched) {\r\n    if (data.isMoved && params.grabCursor) {\r\n      carousel.setGrabCursor(false);\r\n    }\r\n    data.isMoved = false;\r\n    data.startMoving = false;\r\n    return;\r\n  }\r\n  // Return Grab Cursor\r\n  if (\r\n    params.grabCursor &&\r\n    data.isMoved &&\r\n    data.isTouched &&\r\n    (carousel.allowSlideNext === true || carousel.allowSlidePrev === true)\r\n  ) {\r\n    carousel.setGrabCursor(false);\r\n  }\r\n\r\n  // Time diff\r\n  const touchEndTime = now();\r\n  const timeDiff = touchEndTime - data.touchStartTime;\r\n\r\n  // Tap, doubleTap, Click\r\n  if (carousel.allowClick) {\r\n    const pathTree = e.path || (e.composedPath && e.composedPath());\r\n    carousel.updateClickedSlide((pathTree && pathTree[0]) || e.target);\r\n    carousel.emit('tap click', e);\r\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\r\n      carousel.emit('doubleTap doubleClick', e);\r\n    }\r\n  }\r\n\r\n  data.lastClickTime = now();\r\n  nextTick(() => {\r\n    if (!carousel.destroyed) carousel.allowClick = true;\r\n  });\r\n\r\n  if (\r\n    !data.isTouched ||\r\n    !data.isMoved ||\r\n    !carousel.swipeDirection ||\r\n    touches.diff === 0 ||\r\n    data.currentTranslate === data.startTranslate\r\n  ) {\r\n    data.isTouched = false;\r\n    data.isMoved = false;\r\n    data.startMoving = false;\r\n    return;\r\n  }\r\n  data.isTouched = false;\r\n  data.isMoved = false;\r\n  data.startMoving = false;\r\n\r\n  let currentPos;\r\n  if (params.followFinger) {\r\n    currentPos = rtl ? carousel.translate : -carousel.translate;\r\n  } else {\r\n    currentPos = -data.currentTranslate;\r\n  }\r\n\r\n  if (params.cssMode) {\r\n    return;\r\n  }\r\n\r\n  if (carousel.params.freeMode && params.freeMode.enabled) {\r\n    carousel.freeMode.onTouchEnd({ currentPos });\r\n    return;\r\n  }\r\n\r\n  // Find current slide\r\n  let stopIndex = 0;\r\n  let groupSize = carousel.slidesSizesGrid[0];\r\n  for (\r\n    let i = 0;\r\n    i < slidesGrid.length;\r\n    i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\r\n  ) {\r\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\r\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\r\n        stopIndex = i;\r\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\r\n      }\r\n    } else if (currentPos >= slidesGrid[i]) {\r\n      stopIndex = i;\r\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\r\n    }\r\n  }\r\n\r\n  let rewindFirstIndex = null;\r\n  let rewindLastIndex = null;\r\n  if (params.rewind) {\r\n    if (carousel.isBeginning) {\r\n      rewindLastIndex =\r\n        carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual\r\n          ? carousel.virtual.slides.length - 1\r\n          : carousel.slides.length - 1;\r\n    } else if (carousel.isEnd) {\r\n      rewindFirstIndex = 0;\r\n    }\r\n  }\r\n  // Find current slide size\r\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\r\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n  if (timeDiff > params.longSwipesMs) {\r\n    // Long touches\r\n    if (!params.longSwipes) {\r\n      carousel.slideTo(carousel.activeIndex);\r\n      return;\r\n    }\r\n    if (carousel.swipeDirection === 'next') {\r\n      if (ratio >= params.longSwipesRatio)\r\n        carousel.slideTo(\r\n          params.rewind && carousel.isEnd ? rewindFirstIndex : stopIndex + increment\r\n        );\r\n      else carousel.slideTo(stopIndex);\r\n    }\r\n    if (carousel.swipeDirection === 'prev') {\r\n      if (ratio > 1 - params.longSwipesRatio) {\r\n        carousel.slideTo(stopIndex + increment);\r\n      } else if (\r\n        rewindLastIndex !== null &&\r\n        ratio < 0 &&\r\n        Math.abs(ratio) > params.longSwipesRatio\r\n      ) {\r\n        carousel.slideTo(rewindLastIndex);\r\n      } else {\r\n        carousel.slideTo(stopIndex);\r\n      }\r\n    }\r\n  } else {\r\n    // Short swipes\r\n    if (!params.shortSwipes) {\r\n      carousel.slideTo(carousel.activeIndex);\r\n      return;\r\n    }\r\n    const isNavButtonTarget =\r\n      carousel.navigation &&\r\n      (e.target === carousel.navigation.nextEl || e.target === carousel.navigation.prevEl);\r\n    if (!isNavButtonTarget) {\r\n      if (carousel.swipeDirection === 'next') {\r\n        carousel.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\r\n      }\r\n      if (carousel.swipeDirection === 'prev') {\r\n        carousel.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\r\n      }\r\n    } else if (e.target === carousel.navigation.nextEl) {\r\n      carousel.slideTo(stopIndex + increment);\r\n    } else {\r\n      carousel.slideTo(stopIndex);\r\n    }\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function onResize() {\r\n  const carousel = this;\r\n\r\n  const { params, el } = carousel;\r\n\r\n  if (el && el.offsetWidth === 0) return;\r\n\r\n  // Breakpoints\r\n  if (params.breakpoints) {\r\n    carousel.setBreakpoint();\r\n  }\r\n\r\n  // Save locks\r\n  const { allowSlideNext, allowSlidePrev, snapGrid } = carousel;\r\n\r\n  // Disable locks on resize\r\n  carousel.allowSlideNext = true;\r\n  carousel.allowSlidePrev = true;\r\n\r\n  carousel.updateSize();\r\n  carousel.updateSlides();\r\n\r\n  carousel.updateSlidesClasses();\r\n  if (\r\n    (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\r\n    carousel.isEnd &&\r\n    !carousel.isBeginning &&\r\n    !carousel.params.centeredSlides\r\n  ) {\r\n    carousel.slideTo(carousel.slides.length - 1, 0, false, true);\r\n  } else {\r\n    carousel.slideTo(carousel.activeIndex, 0, false, true);\r\n  }\r\n\r\n  if (carousel.autoplay && carousel.autoplay.running && carousel.autoplay.paused) {\r\n    carousel.autoplay.run();\r\n  }\r\n  // Return locks after resize\r\n  carousel.allowSlidePrev = allowSlidePrev;\r\n  carousel.allowSlideNext = allowSlideNext;\r\n\r\n  if (carousel.params.watchOverflow && snapGrid !== carousel.snapGrid) {\r\n    carousel.checkOverflow();\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function onClick(e) {\r\n  const carousel = this;\r\n  if (!carousel.enabled) return;\r\n  if (!carousel.allowClick) {\r\n    if (carousel.params.preventClicks) e.preventDefault();\r\n    if (carousel.params.preventClicksPropagation && carousel.animating) {\r\n      e.stopPropagation();\r\n      e.stopImmediatePropagation();\r\n    }\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function onScroll() {\r\n  const carousel = this;\r\n  const { wrapperEl, rtlTranslate, enabled } = carousel;\r\n  if (!enabled) return;\r\n  carousel.previousTranslate = carousel.translate;\r\n  if (carousel.isHorizontal()) {\r\n    carousel.translate = -wrapperEl.scrollLeft;\r\n  } else {\r\n    carousel.translate = -wrapperEl.scrollTop;\r\n  }\r\n  // eslint-disable-next-line\r\n  if (carousel.translate === 0) carousel.translate = 0;\r\n\r\n  carousel.updateActiveIndex();\r\n  carousel.updateSlidesClasses();\r\n\r\n  let newProgress;\r\n  const translatesDiff = carousel.maxTranslate() - carousel.minTranslate();\r\n  if (translatesDiff === 0) {\r\n    newProgress = 0;\r\n  } else {\r\n    newProgress = (carousel.translate - carousel.minTranslate()) / translatesDiff;\r\n  }\r\n  if (newProgress !== carousel.progress) {\r\n    carousel.updateProgress(rtlTranslate ? -carousel.translate : carousel.translate);\r\n  }\r\n\r\n  carousel.emit('setTranslate', carousel.translate, false);\r\n}\r\n","//@ts-nocheck\r\nimport { getDocument } from 'ssr-window';\r\n\r\nimport onTouchStart from './onTouchStart';\r\nimport onTouchMove from './onTouchMove';\r\nimport onTouchEnd from './onTouchEnd';\r\nimport onResize from './onResize';\r\nimport onClick from './onClick';\r\nimport onScroll from './onScroll';\r\n\r\nlet dummyEventAttached = false;\r\nfunction dummyEventListener() {}\r\n\r\nconst events = (carousel, method) => {\r\n  const document = getDocument();\r\n  const { params, touchEvents, el, wrapperEl, device, support } = carousel;\r\n  const capture = !!params.nested;\r\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\r\n  const carouselMethod = method;\r\n\r\n  // Touch Events\r\n  if (!support.touch) {\r\n    el[domMethod](touchEvents.start, carousel.onTouchStart, false);\r\n    document[domMethod](touchEvents.move, carousel.onTouchMove, capture);\r\n    document[domMethod](touchEvents.end, carousel.onTouchEnd, false);\r\n  } else {\r\n    const passiveListener =\r\n      touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\r\n        ? { passive: true, capture: false }\r\n        : false;\r\n    el[domMethod](touchEvents.start, carousel.onTouchStart, passiveListener);\r\n    el[domMethod](\r\n      touchEvents.move,\r\n      carousel.onTouchMove,\r\n      support.passiveListener ? { passive: false, capture } : capture\r\n    );\r\n    el[domMethod](touchEvents.end, carousel.onTouchEnd, passiveListener);\r\n    if (touchEvents.cancel) {\r\n      el[domMethod](touchEvents.cancel, carousel.onTouchEnd, passiveListener);\r\n    }\r\n  }\r\n  // Prevent Links Clicks\r\n  if (params.preventClicks || params.preventClicksPropagation) {\r\n    el[domMethod]('click', carousel.onClick, true);\r\n  }\r\n  if (params.cssMode) {\r\n    wrapperEl[domMethod]('scroll', carousel.onScroll);\r\n  }\r\n\r\n  // Resize handler\r\n  if (params.updateOnWindowResize) {\r\n    carousel[carouselMethod](\r\n      device.ios || device.android\r\n        ? 'resize orientationchange observerUpdate'\r\n        : 'resize observerUpdate',\r\n      onResize,\r\n      true\r\n    );\r\n  } else {\r\n    carousel[carouselMethod]('observerUpdate', onResize, true);\r\n  }\r\n};\r\n\r\nfunction attachEvents() {\r\n  const carousel = this;\r\n  const document = getDocument();\r\n  const { params, support } = carousel;\r\n\r\n  carousel.onTouchStart = onTouchStart.bind(carousel);\r\n  carousel.onTouchMove = onTouchMove.bind(carousel);\r\n  carousel.onTouchEnd = onTouchEnd.bind(carousel);\r\n\r\n  if (params.cssMode) {\r\n    carousel.onScroll = onScroll.bind(carousel);\r\n  }\r\n\r\n  carousel.onClick = onClick.bind(carousel);\r\n\r\n  if (support.touch && !dummyEventAttached) {\r\n    document.addEventListener('touchstart', dummyEventListener);\r\n    dummyEventAttached = true;\r\n  }\r\n\r\n  events(carousel, 'on');\r\n}\r\n\r\nfunction detachEvents() {\r\n  const carousel = this;\r\n  events(carousel, 'off');\r\n}\r\n\r\nexport default {\r\n  attachEvents,\r\n  detachEvents\r\n};\r\n","//@ts-nocheck\r\nimport { extend } from '../../shared/utils';\r\n\r\nconst isGridEnabled = (carousel, params) => {\r\n  return carousel.grid && params.grid && params.grid.rows > 1;\r\n};\r\n\r\nexport default function setBreakpoint() {\r\n  const carousel = this;\r\n  const { activeIndex, initialized, loopedSlides = 0, params, $el } = carousel;\r\n  const breakpoints = params.breakpoints;\r\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\r\n\r\n  // Get breakpoint for window width and update parameters\r\n  const breakpoint = carousel.getBreakpoint(\r\n    breakpoints,\r\n    carousel.params.breakpointsBase,\r\n    carousel.el\r\n  );\r\n\r\n  if (!breakpoint || carousel.currentBreakpoint === breakpoint) return;\r\n\r\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\r\n  const breakpointParams = breakpointOnlyParams || carousel.originalParams;\r\n  const wasMultiRow = isGridEnabled(carousel, params);\r\n  const isMultiRow = isGridEnabled(carousel, breakpointParams);\r\n\r\n  const wasEnabled = params.enabled;\r\n\r\n  if (wasMultiRow && !isMultiRow) {\r\n    $el.removeClass(\r\n      `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`\r\n    );\r\n    carousel.emitContainerClasses();\r\n  } else if (!wasMultiRow && isMultiRow) {\r\n    $el.addClass(`${params.containerModifierClass}grid`);\r\n    if (\r\n      (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\r\n      (!breakpointParams.grid.fill && params.grid.fill === 'column')\r\n    ) {\r\n      $el.addClass(`${params.containerModifierClass}grid-column`);\r\n    }\r\n    carousel.emitContainerClasses();\r\n  }\r\n\r\n  // Toggle navigation, pagination, scrollbar\r\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\r\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\r\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\r\n    if (wasModuleEnabled && !isModuleEnabled) {\r\n      carousel[prop].disable();\r\n    }\r\n    if (!wasModuleEnabled && isModuleEnabled) {\r\n      carousel[prop].enable();\r\n    }\r\n  });\r\n\r\n  const directionChanged =\r\n    breakpointParams.direction && breakpointParams.direction !== params.direction;\r\n  const needsReLoop = params.loop;\r\n  // const needsReLoop =\r\n  //   params.loop &&\r\n  //   (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\r\n\r\n  if (directionChanged && initialized) {\r\n    carousel.changeDirection(breakpointParams.direction);\r\n  }\r\n  extend(carousel.params, breakpointParams);\r\n\r\n  const isEnabled = carousel.params.enabled;\r\n\r\n  Object.assign(carousel, {\r\n    allowTouchMove: carousel.params.allowTouchMove,\r\n    allowSlideNext: carousel.params.allowSlideNext,\r\n    allowSlidePrev: carousel.params.allowSlidePrev\r\n  });\r\n\r\n  if (wasEnabled && !isEnabled) {\r\n    carousel.disable();\r\n  } else if (!wasEnabled && isEnabled) {\r\n    carousel.enable();\r\n  }\r\n\r\n  carousel.currentBreakpoint = breakpoint;\r\n\r\n  carousel.emit('_beforeBreakpoint', breakpointParams);\r\n\r\n  if (initialized && needsReLoop) {\r\n    carousel.loopDestroy();\r\n    carousel.loopCreate();\r\n    carousel.updateSlides();\r\n    carousel.slideTo(activeIndex - loopedSlides + carousel.loopedSlides, 0, false);\r\n  }\r\n\r\n  carousel.emit('breakpoint', breakpointParams);\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\r\n  if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\r\n  let breakpoint = false;\r\n\r\n  const window = getWindow();\r\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\r\n\r\n  const points = Object.keys(breakpoints).map(point => {\r\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\r\n      const minRatio = parseFloat(point.substr(1));\r\n      const value = currentHeight * minRatio;\r\n      return { value, point };\r\n    }\r\n    return { value: point, point };\r\n  });\r\n\r\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\r\n  for (let i = 0; i < points.length; i += 1) {\r\n    const { point, value } = points[i];\r\n    if (base === 'window') {\r\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\r\n        breakpoint = point;\r\n      }\r\n    } else if (value <= containerEl.clientWidth) {\r\n      breakpoint = point;\r\n    }\r\n  }\r\n  return breakpoint || 'max';\r\n}\r\n","//@ts-nocheck\r\nimport setBreakpoint from './setBreakpoint';\r\nimport getBreakpoint from './getBreakpoint';\r\n\r\nexport default { setBreakpoint, getBreakpoint };\r\n","//@ts-nocheck\r\nfunction prepareClasses(entries, prefix) {\r\n  const resultClasses = [];\r\n  entries.forEach(item => {\r\n    if (typeof item === 'object') {\r\n      Object.keys(item).forEach(classNames => {\r\n        if (item[classNames]) {\r\n          resultClasses.push(prefix + classNames);\r\n        }\r\n      });\r\n    } else if (typeof item === 'string') {\r\n      resultClasses.push(prefix + item);\r\n    }\r\n  });\r\n  return resultClasses;\r\n}\r\n\r\nexport default function addClasses() {\r\n  const carousel = this;\r\n  const { classNames, params, rtl, $el, device, support } = carousel;\r\n  // prettier-ignore\r\n  const suffixes = prepareClasses([\r\n    'initialized',\r\n    params.direction,\r\n    { 'pointer-events': !support.touch },\r\n    { 'free-mode': carousel.params.freeMode && params.freeMode.enabled },\r\n    { 'autoheight': params.autoHeight },\r\n    { 'rtl': rtl },\r\n    { 'grid': params.grid && params.grid.rows > 1 },\r\n    { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\r\n    { 'android': device.android },\r\n    { 'ios': device.ios },\r\n    { 'css-mode': params.cssMode },\r\n    { 'centered': params.cssMode && params.centeredSlides },\r\n    { 'watch-progress': params.watchSlidesProgress },\r\n  ], params.containerModifierClass);\r\n  classNames.push(...suffixes);\r\n  $el.addClass([...classNames].join(' '));\r\n  carousel.emitContainerClasses();\r\n}\r\n","//@ts-nocheck\r\nexport default function removeClasses() {\r\n  const carousel = this;\r\n  const { $el, classNames } = carousel;\r\n\r\n  $el.removeClass(classNames.join(' '));\r\n  carousel.emitContainerClasses();\r\n}\r\n","//@ts-nocheck\r\nimport addClasses from './addClasses';\r\nimport removeClasses from './removeClasses';\r\n\r\nexport default { addClasses, removeClasses };\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\nimport $ from '../../shared/dom';\r\n\r\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\r\n  const window = getWindow();\r\n  let image;\r\n  function onReady() {\r\n    if (callback) callback();\r\n  }\r\n  const isPicture = $(imageEl).parent('picture')[0];\r\n\r\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\r\n    if (src) {\r\n      image = new window.Image();\r\n      image.onload = onReady;\r\n      image.onerror = onReady;\r\n      if (sizes) {\r\n        image.sizes = sizes;\r\n      }\r\n      if (srcset) {\r\n        image.srcset = srcset;\r\n      }\r\n      if (src) {\r\n        image.src = src;\r\n      }\r\n    } else {\r\n      onReady();\r\n    }\r\n  } else {\r\n    // image already loaded...\r\n    onReady();\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function preloadImages() {\r\n  const carousel = this;\r\n  carousel.imagesToLoad = carousel.$el.find('img');\r\n  function onReady() {\r\n    if (typeof carousel === 'undefined' || carousel === null || !carousel || carousel.destroyed)\r\n      return;\r\n    if (carousel.imagesLoaded !== undefined) carousel.imagesLoaded += 1;\r\n    if (carousel.imagesLoaded === carousel.imagesToLoad.length) {\r\n      if (carousel.params.updateOnImagesReady) carousel.update();\r\n      carousel.emit('imagesReady');\r\n    }\r\n  }\r\n  for (let i = 0; i < carousel.imagesToLoad.length; i += 1) {\r\n    const imageEl = carousel.imagesToLoad[i];\r\n    carousel.loadImage(\r\n      imageEl,\r\n      imageEl.currentSrc || imageEl.getAttribute('src'),\r\n      imageEl.srcset || imageEl.getAttribute('srcset'),\r\n      imageEl.sizes || imageEl.getAttribute('sizes'),\r\n      true,\r\n      onReady\r\n    );\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport loadImage from './loadImage';\r\nimport preloadImages from './preloadImages';\r\n\r\nexport default {\r\n  loadImage,\r\n  preloadImages\r\n};\r\n","//@ts-nocheck\r\nfunction checkOverflow() {\r\n  const carousel = this;\r\n  const { isLocked: wasLocked, params } = carousel;\r\n  const { slidesOffsetBefore } = params;\r\n\r\n  if (slidesOffsetBefore) {\r\n    const lastSlideIndex = carousel.slides.length - 1;\r\n    const lastSlideRightEdge =\r\n      carousel.slidesGrid[lastSlideIndex] +\r\n      carousel.slidesSizesGrid[lastSlideIndex] +\r\n      slidesOffsetBefore * 2;\r\n    carousel.isLocked = carousel.size > lastSlideRightEdge;\r\n  } else {\r\n    carousel.isLocked = carousel.snapGrid.length === 1;\r\n  }\r\n  if (params.allowSlideNext === true) {\r\n    carousel.allowSlideNext = !carousel.isLocked;\r\n  }\r\n  if (params.allowSlidePrev === true) {\r\n    carousel.allowSlidePrev = !carousel.isLocked;\r\n  }\r\n\r\n  if (wasLocked && wasLocked !== carousel.isLocked) {\r\n    carousel.isEnd = false;\r\n  }\r\n  if (wasLocked !== carousel.isLocked) {\r\n    carousel.emit(carousel.isLocked ? 'lock' : 'unlock');\r\n  }\r\n}\r\n\r\nexport default { checkOverflow };\r\n","//@ts-nocheck\r\nexport default {\r\n  init: true,\r\n  direction: 'horizontal',\r\n  touchEventsTarget: 'wrapper',\r\n  initialSlide: 0,\r\n  speed: 300,\r\n  cssMode: false,\r\n  updateOnWindowResize: true,\r\n  resizeObserver: true,\r\n  nested: false,\r\n  createElements: false,\r\n  enabled: true,\r\n  focusableElements: 'input, select, option, textarea, button, video, label',\r\n\r\n  // Overrides\r\n  width: null,\r\n  height: null,\r\n\r\n  //\r\n  preventInteractionOnTransition: false,\r\n\r\n  // ssr\r\n  userAgent: null,\r\n  url: null,\r\n\r\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\r\n  edgeSwipeDetection: false,\r\n  edgeSwipeThreshold: 20,\r\n\r\n  // Autoheight\r\n  autoHeight: false,\r\n\r\n  // Set wrapper width\r\n  setWrapperSize: false,\r\n\r\n  // Virtual Translate\r\n  virtualTranslate: false,\r\n\r\n  // Effects\r\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\r\n\r\n  // Breakpoints\r\n  breakpoints: undefined,\r\n  breakpointsBase: 'window',\r\n\r\n  // Slides grid\r\n  spaceBetween: 0,\r\n  slidesPerView: 1,\r\n  slidesPerGroup: 1,\r\n  slidesPerGroupSkip: 0,\r\n  slidesPerGroupAuto: false,\r\n  centeredSlides: false,\r\n  centeredSlidesBounds: false,\r\n  slidesOffsetBefore: 0, // in px\r\n  slidesOffsetAfter: 0, // in px\r\n  normalizeSlideIndex: true,\r\n  centerInsufficientSlides: false,\r\n\r\n  // Disable carousel and hide navigation when container not overflow\r\n  watchOverflow: true,\r\n\r\n  // Round length\r\n  roundLengths: false,\r\n\r\n  // Touches\r\n  touchRatio: 1,\r\n  touchAngle: 45,\r\n  simulateTouch: false,\r\n  shortSwipes: true,\r\n  longSwipes: true,\r\n  longSwipesRatio: 0.5,\r\n  longSwipesMs: 300,\r\n  followFinger: true,\r\n  allowTouchMove: true,\r\n  threshold: 0,\r\n  touchMoveStopPropagation: false,\r\n  touchStartPreventDefault: true,\r\n  touchStartForcePreventDefault: false,\r\n  touchReleaseOnEdges: false,\r\n\r\n  // Unique Navigation Elements\r\n  uniqueNavElements: true,\r\n\r\n  // Resistance\r\n  resistance: true,\r\n  resistanceRatio: 0.85,\r\n\r\n  // Progress\r\n  watchSlidesProgress: false,\r\n\r\n  // Cursor\r\n  grabCursor: false,\r\n\r\n  // Clicks\r\n  preventClicks: true,\r\n  preventClicksPropagation: true,\r\n  slideToClickedSlide: false,\r\n\r\n  // Images\r\n  preloadImages: true,\r\n  updateOnImagesReady: true,\r\n\r\n  // loop\r\n  loop: false,\r\n  loopAdditionalSlides: 0,\r\n  loopedSlides: null,\r\n  loopedSlidesLimit: true,\r\n  loopFillGroupWithBlank: false,\r\n  loopPreventsSlide: true,\r\n\r\n  // rewind\r\n  rewind: false,\r\n\r\n  // Swiping/no swiping\r\n  allowSlidePrev: true,\r\n  allowSlideNext: true,\r\n  swipeHandler: null, // '.swipe-handler',\r\n  noSwiping: true,\r\n  noSwipingClass: 'vts-carousel-no-swiping',\r\n  noSwipingSelector: null,\r\n\r\n  // Passive Listeners\r\n  passiveListeners: true,\r\n\r\n  maxBackfaceHiddenSlides: 10,\r\n\r\n  // NS\r\n  containerModifierClass: 'vts-carousel-', // NEW\r\n  slideClass: 'vts-carousel-slide',\r\n  slideBlankClass: 'vts-carousel-slide-invisible-blank',\r\n  slideActiveClass: 'vts-carousel-slide-active',\r\n  slideDuplicateActiveClass: 'vts-carousel-slide-duplicate-active',\r\n  slideVisibleClass: 'vts-carousel-slide-visible',\r\n  slideDuplicateClass: 'vts-carousel-slide-duplicate',\r\n  slideNextClass: 'vts-carousel-slide-next',\r\n  slideDuplicateNextClass: 'vts-carousel-slide-duplicate-next',\r\n  slidePrevClass: 'vts-carousel-slide-prev',\r\n  slideDuplicatePrevClass: 'vts-carousel-slide-duplicate-prev',\r\n  wrapperClass: 'vts-carousel-wrapper',\r\n\r\n  // Callbacks\r\n  runCallbacksOnInit: true,\r\n\r\n  // Internals\r\n  _emitClasses: false\r\n};\r\n","//@ts-nocheck\r\nimport { extend } from '../shared/utils';\r\n\r\nexport default function moduleExtendParams(params, allModulesParams) {\r\n  return function extendParams(obj = {}) {\r\n    const moduleParamName = Object.keys(obj)[0];\r\n    const moduleParams = obj[moduleParamName];\r\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\r\n      extend(allModulesParams, obj);\r\n      return;\r\n    }\r\n    if (\r\n      ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\r\n      params[moduleParamName] === true\r\n    ) {\r\n      params[moduleParamName] = { auto: true };\r\n    }\r\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\r\n      extend(allModulesParams, obj);\r\n      return;\r\n    }\r\n    if (params[moduleParamName] === true) {\r\n      params[moduleParamName] = { enabled: true };\r\n    }\r\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\r\n      params[moduleParamName].enabled = true;\r\n    }\r\n    if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\r\n    extend(allModulesParams, obj);\r\n  };\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-param-reassign: \"off\" */\r\nimport { getDocument } from 'ssr-window';\r\nimport $ from '../shared/dom';\r\nimport { extend, now, deleteProps } from '../shared/utils';\r\nimport { getSupport } from '../shared/get-support';\r\nimport { getDevice } from '../shared/get-device';\r\nimport { getBrowser } from '../shared/get-browser';\r\n\r\nimport Resize from './modules/resize/resize';\r\nimport Observer from './modules/observer/observer';\r\nimport Autoplay from './modules/autoplay/autoplay';\r\nimport Navigation from './modules/navigation/navigation';\r\nimport Pagination from './modules/pagination/pagination';\r\n\r\nimport eventsEmitter from './events-emitter';\r\n\r\nimport update from './update/index';\r\nimport translate from './translate/index';\r\nimport transition from './transition/index';\r\nimport slide from './slide/index';\r\nimport loop from './loop/index';\r\nimport grabCursor from './grab-cursor/index';\r\nimport events from './events/index';\r\nimport breakpoints from './breakpoints/index';\r\nimport classes from './classes/index';\r\nimport images from './images/index';\r\nimport checkOverflow from './check-overflow/index';\r\n\r\nimport defaults from './defaults';\r\nimport moduleExtendParams from './moduleExtendParams';\r\n\r\nconst prototypes = {\r\n  eventsEmitter,\r\n  update,\r\n  translate,\r\n  transition,\r\n  slide,\r\n  loop,\r\n  grabCursor,\r\n  events,\r\n  breakpoints,\r\n  checkOverflow,\r\n  classes,\r\n  images\r\n};\r\n\r\nconst extendedDefaults = {};\r\n\r\nclass Carousel {\r\n  isHorizontal() {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  updateSlides() {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  updateProgress() {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  updateSlidesClasses() {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  setBreakpoint() {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  getBreakpoint(breakpoints) {\r\n    throw new Error('Method not implemented.');\r\n  }\r\n  constructor(...args) {\r\n    let el;\r\n    let params;\r\n    if (\r\n      args.length === 1 &&\r\n      args[0].constructor &&\r\n      Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\r\n    ) {\r\n      params = args[0];\r\n    } else {\r\n      [el, params] = args;\r\n    }\r\n    if (!params) params = {};\r\n\r\n    params = extend({}, params);\r\n    if (el && !params.el) params.el = el;\r\n\r\n    if (params.el && $(params.el).length > 1) {\r\n      const carousels = [];\r\n      $(params.el).each(containerEl => {\r\n        const newParams = extend({}, params, { el: containerEl });\r\n        carousels.push(new carousel(newParams));\r\n      });\r\n      // eslint-disable-next-line no-constructor-return\r\n      return carousels;\r\n    }\r\n\r\n    // carousel Instance\r\n    const carousel = this;\r\n    carousel.__carousel__ = true;\r\n    carousel.support = getSupport();\r\n    carousel.device = getDevice({ userAgent: params.userAgent });\r\n    carousel.browser = getBrowser();\r\n\r\n    carousel.eventsListeners = {};\r\n    carousel.eventsAnyListeners = [];\r\n    carousel.modules = [...carousel.__modules__];\r\n    if (params.modules && Array.isArray(params.modules)) {\r\n      carousel.modules.push(...params.modules);\r\n    }\r\n\r\n    const allModulesParams = {};\r\n\r\n    carousel.modules.forEach(mod => {\r\n      mod({\r\n        carousel,\r\n        extendParams: moduleExtendParams(params, allModulesParams),\r\n        on: carousel.on.bind(carousel),\r\n        once: carousel.once.bind(carousel),\r\n        off: carousel.off.bind(carousel),\r\n        emit: carousel.emit.bind(carousel)\r\n      });\r\n    });\r\n\r\n    // Extend defaults with modules params\r\n    const carouselParams = extend({}, defaults, allModulesParams);\r\n\r\n    // Extend defaults with passed params\r\n    carousel.params = extend({}, carouselParams, extendedDefaults, params);\r\n    carousel.originalParams = extend({}, carousel.params);\r\n    carousel.passedParams = extend({}, params);\r\n\r\n    // add event listeners\r\n    if (carousel.params && carousel.params.on) {\r\n      Object.keys(carousel.params.on).forEach(eventName => {\r\n        carousel.on(eventName, carousel.params.on[eventName]);\r\n      });\r\n    }\r\n    if (carousel.params && carousel.params.onAny) {\r\n      carousel.onAny(carousel.params.onAny);\r\n    }\r\n\r\n    // Save Dom lib\r\n    carousel.$ = $;\r\n\r\n    // Extend carousel\r\n    Object.assign(carousel, {\r\n      enabled: carousel.params.enabled,\r\n      el,\r\n\r\n      // Classes\r\n      classNames: [],\r\n\r\n      // Slides\r\n      slides: $(),\r\n      slidesGrid: [],\r\n      snapGrid: [],\r\n      slidesSizesGrid: [],\r\n\r\n      // isDirection\r\n      isHorizontal() {\r\n        return carousel.params.direction === 'horizontal';\r\n      },\r\n      isVertical() {\r\n        return carousel.params.direction === 'vertical';\r\n      },\r\n\r\n      // Indexes\r\n      activeIndex: 0,\r\n      realIndex: 0,\r\n\r\n      //\r\n      isBeginning: true,\r\n      isEnd: false,\r\n\r\n      // Props\r\n      translate: 0,\r\n      previousTranslate: 0,\r\n      progress: 0,\r\n      velocity: 0,\r\n      animating: false,\r\n\r\n      // Locks\r\n      allowSlideNext: carousel.params.allowSlideNext,\r\n      allowSlidePrev: carousel.params.allowSlidePrev,\r\n\r\n      // Touch Events\r\n      touchEvents: (function touchEvents() {\r\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\r\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\r\n\r\n        carousel.touchEventsTouch = {\r\n          start: touch[0],\r\n          move: touch[1],\r\n          end: touch[2],\r\n          cancel: touch[3]\r\n        };\r\n        carousel.touchEventsDesktop = {\r\n          start: desktop[0],\r\n          move: desktop[1],\r\n          end: desktop[2]\r\n        };\r\n        return carousel.support.touch || !carousel.params.simulateTouch\r\n          ? carousel.touchEventsTouch\r\n          : carousel.touchEventsDesktop;\r\n      })(),\r\n      touchEventsData: {\r\n        isTouched: undefined,\r\n        isMoved: undefined,\r\n        allowTouchCallbacks: undefined,\r\n        touchStartTime: undefined,\r\n        isScrolling: undefined,\r\n        currentTranslate: undefined,\r\n        startTranslate: undefined,\r\n        allowThresholdMove: undefined,\r\n        // Form elements to match\r\n        focusableElements: carousel.params.focusableElements,\r\n        // Last click time\r\n        lastClickTime: now(),\r\n        clickTimeout: undefined,\r\n        // Velocities\r\n        velocities: [],\r\n        allowMomentumBounce: undefined,\r\n        isTouchEvent: undefined,\r\n        startMoving: undefined\r\n      },\r\n\r\n      // Clicks\r\n      allowClick: true,\r\n\r\n      // Touches\r\n      allowTouchMove: carousel.params.allowTouchMove,\r\n\r\n      touches: {\r\n        startX: 0,\r\n        startY: 0,\r\n        currentX: 0,\r\n        currentY: 0,\r\n        diff: 0\r\n      },\r\n\r\n      // Images\r\n      imagesToLoad: [],\r\n      imagesLoaded: 0\r\n    });\r\n\r\n    carousel.emit('_carousel');\r\n\r\n    // Init\r\n    if (carousel.params.init) {\r\n      carousel.init();\r\n    }\r\n\r\n    // Return app instance\r\n    // eslint-disable-next-line no-constructor-return\r\n    return carousel;\r\n    this.virtual = undefined;\r\n    this.loopCreate = undefined;\r\n    this.loopDestroy = undefined;\r\n    this.loopedSlides = undefined;\r\n    this.lazy = undefined;\r\n    this.controller = undefined;\r\n    this.allowSlideNext = undefined;\r\n    this.allowSlidePrev = undefined;\r\n    this.currentBreakpoint = undefined;\r\n  }\r\n\r\n  enable() {\r\n    const carousel = this;\r\n    if (carousel.enabled) return;\r\n    carousel.enabled = true;\r\n    if (carousel.params.grabCursor) {\r\n      carousel.setGrabCursor();\r\n    }\r\n    carousel.emit('enable');\r\n  }\r\n\r\n  disable() {\r\n    const carousel = this;\r\n    if (!carousel.enabled) return;\r\n    carousel.enabled = false;\r\n    if (carousel.params.grabCursor) {\r\n      carousel.unsetGrabCursor();\r\n    }\r\n    carousel.emit('disable');\r\n  }\r\n\r\n  setProgress(progress, speed) {\r\n    const carousel = this;\r\n    progress = Math.min(Math.max(progress, 0), 1);\r\n    const min = carousel.minTranslate();\r\n    const max = carousel.maxTranslate();\r\n    const current = (max - min) * progress + min;\r\n    carousel.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\r\n    carousel.updateActiveIndex();\r\n    carousel.updateSlidesClasses();\r\n  }\r\n\r\n  emitContainerClasses() {\r\n    const carousel = this;\r\n    if (!carousel.params._emitClasses || !carousel.el) return;\r\n    const cls = carousel.el.className.split(' ').filter(className => {\r\n      return (\r\n        className.indexOf('vts-carousel') === 0 ||\r\n        className.indexOf(carousel.params.containerModifierClass) === 0\r\n      );\r\n    });\r\n    carousel.emit('_containerClasses', cls.join(' '));\r\n  }\r\n\r\n  getSlideClasses(slideEl) {\r\n    const carousel = this;\r\n    if (carousel.destroyed) return '';\r\n\r\n    return slideEl.className\r\n      .split(' ')\r\n      .filter(className => {\r\n        return (\r\n          className.indexOf('vts-carousel-slide') === 0 ||\r\n          className.indexOf(carousel.params.slideClass) === 0\r\n        );\r\n      })\r\n      .join(' ');\r\n  }\r\n\r\n  emitSlidesClasses() {\r\n    const carousel = this;\r\n    if (!carousel.params._emitClasses || !carousel.el) return;\r\n    const updates = [];\r\n    carousel.slides.each(slideEl => {\r\n      const classNames = carousel.getSlideClasses(slideEl);\r\n      updates.push({ slideEl, classNames });\r\n      carousel.emit('_slideClass', slideEl, classNames);\r\n    });\r\n    carousel.emit('_slideClasses', updates);\r\n  }\r\n\r\n  slidesPerViewDynamic(view = 'current', exact = false) {\r\n    const carousel = this;\r\n    const {\r\n      params,\r\n      slides,\r\n      slidesGrid,\r\n      slidesSizesGrid,\r\n      size: carouselSize,\r\n      activeIndex\r\n    } = carousel;\r\n    let spv = 1;\r\n    if (params.centeredSlides) {\r\n      let slideSize = slides[activeIndex].carouselSlideSize;\r\n      let breakLoop;\r\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\r\n        if (slides[i] && !breakLoop) {\r\n          slideSize += slides[i].carouselSlideSize;\r\n          spv += 1;\r\n          if (slideSize > carouselSize) breakLoop = true;\r\n        }\r\n      }\r\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\r\n        if (slides[i] && !breakLoop) {\r\n          slideSize += slides[i].carouselSlideSize;\r\n          spv += 1;\r\n          if (slideSize > carouselSize) breakLoop = true;\r\n        }\r\n      }\r\n    } else {\r\n      // eslint-disable-next-line\r\n      if (view === 'current') {\r\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\r\n          const slideInView = exact\r\n            ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < carouselSize\r\n            : slidesGrid[i] - slidesGrid[activeIndex] < carouselSize;\r\n          if (slideInView) {\r\n            spv += 1;\r\n          }\r\n        }\r\n      } else {\r\n        // previous\r\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\r\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < carouselSize;\r\n          if (slideInView) {\r\n            spv += 1;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return spv;\r\n  }\r\n\r\n  update() {\r\n    const carousel = this;\r\n    if (!carousel || carousel.destroyed) return;\r\n    const { snapGrid, params } = carousel;\r\n\r\n    // Loop recreation\r\n    if (params.loop) {\r\n      carousel.loopDestroy();\r\n      carousel.loopCreate();\r\n    }\r\n    // Breakpoints\r\n    if (params.breakpoints) {\r\n      carousel.setBreakpoint();\r\n    }\r\n    carousel.updateSize();\r\n    carousel.updateSlides();\r\n    carousel.updateProgress();\r\n    carousel.updateSlidesClasses();\r\n\r\n    function setTranslate() {\r\n      const translateValue = carousel.rtlTranslate ? carousel.translate * -1 : carousel.translate;\r\n      const newTranslate = Math.min(\r\n        Math.max(translateValue, carousel.maxTranslate()),\r\n        carousel.minTranslate()\r\n      );\r\n      carousel.setTranslate(newTranslate);\r\n      carousel.updateActiveIndex();\r\n      carousel.updateSlidesClasses();\r\n    }\r\n    let translated;\r\n    if (carousel.params.freeMode && carousel.params.freeMode.enabled) {\r\n      setTranslate();\r\n      if (carousel.params.autoHeight) {\r\n        carousel.updateAutoHeight();\r\n      }\r\n    } else {\r\n      if (params.loop) {\r\n        translated = carousel.slideTo(carousel.realIndex + carousel.loopedSlides, 0, false, true);\r\n      } else if (\r\n        (carousel.params.slidesPerView === 'auto' || carousel.params.slidesPerView > 1) &&\r\n        carousel.isEnd &&\r\n        !carousel.params.centeredSlides\r\n      ) {\r\n        translated = carousel.slideTo(carousel.slides.length - 1, 0, false, true);\r\n      } else {\r\n        translated = carousel.slideTo(carousel.activeIndex, 0, false, true);\r\n      }\r\n      if (!translated) {\r\n        setTranslate();\r\n      }\r\n    }\r\n    if (params.watchOverflow && snapGrid !== carousel.snapGrid) {\r\n      carousel.checkOverflow();\r\n    }\r\n\r\n    carousel.emit('update');\r\n  }\r\n\r\n  changeDirection(newDirection, needUpdate = true) {\r\n    const carousel = this;\r\n    const currentDirection = carousel.params.direction;\r\n\r\n    carousel.$el\r\n      .removeClass(`${carousel.params.containerModifierClass}horizontal`)\r\n      .removeClass(`${carousel.params.containerModifierClass}vertical`)\r\n      .addClass(`${carousel.params.containerModifierClass}${newDirection}`);\r\n\r\n    if (!newDirection) {\r\n      // eslint-disable-next-line\r\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\r\n    }\r\n    if (\r\n      newDirection === currentDirection ||\r\n      (newDirection !== 'horizontal' && newDirection !== 'vertical')\r\n    ) {\r\n      return carousel;\r\n    }\r\n\r\n    carousel.emitContainerClasses();\r\n\r\n    carousel.params.direction = newDirection;\r\n\r\n    carousel.slides.each(slideEl => {\r\n      if (newDirection === 'vertical') {\r\n        slideEl.style.width = '';\r\n      } else {\r\n        slideEl.style.height = '';\r\n      }\r\n    });\r\n\r\n    carousel.emit('changeDirection');\r\n    if (needUpdate) carousel.update();\r\n\r\n    return carousel;\r\n  }\r\n\r\n  changeLanguageDirection(direction) {\r\n    const carousel = this;\r\n    if ((carousel.rtl && direction === 'rtl') || (!carousel.rtl && direction === 'ltr')) return;\r\n    carousel.rtl = direction === 'rtl';\r\n    carousel.rtlTranslate = carousel.params.direction === 'horizontal' && carousel.rtl;\r\n    if (carousel.rtl) {\r\n      carousel.$el.addClass(`${carousel.params.containerModifierClass}rtl`);\r\n      carousel.el.dir = 'rtl';\r\n    } else {\r\n      carousel.$el.removeClass(`${carousel.params.containerModifierClass}rtl`);\r\n      carousel.el.dir = 'ltr';\r\n    }\r\n    carousel.update();\r\n  }\r\n\r\n  mount(el) {\r\n    const carousel = this;\r\n    if (carousel.mounted) return true;\r\n\r\n    // Find el\r\n    const $el = $(el || carousel.params.el);\r\n    el = $el[0];\r\n\r\n    if (!el) {\r\n      return false;\r\n    }\r\n\r\n    el.carousel = carousel;\r\n\r\n    const getWrapperSelector = () => {\r\n      return `.${(carousel.params.wrapperClass || '').trim().split(' ').join('.')}`;\r\n    };\r\n\r\n    const getWrapper = () => {\r\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\r\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\r\n        // Children needs to return slot items\r\n        res.children = options => $el.children(options);\r\n        return res;\r\n      }\r\n      if (!$el.children) {\r\n        return $($el).children(getWrapperSelector());\r\n      }\r\n      return $el.children(getWrapperSelector());\r\n    };\r\n    // Find Wrapper\r\n    let $wrapperEl = getWrapper();\r\n    if ($wrapperEl.length === 0 && carousel.params.createElements) {\r\n      const document = getDocument();\r\n      const wrapper = document.createElement('div');\r\n      $wrapperEl = $(wrapper);\r\n      wrapper.className = carousel.params.wrapperClass;\r\n      $el.append(wrapper);\r\n      $el.children(`.${carousel.params.slideClass}`).each(slideEl => {\r\n        $wrapperEl.append(slideEl);\r\n      });\r\n    }\r\n\r\n    Object.assign(carousel, {\r\n      $el,\r\n      el,\r\n      $wrapperEl,\r\n      wrapperEl: $wrapperEl[0],\r\n      mounted: true,\r\n\r\n      // RTL\r\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\r\n      rtlTranslate:\r\n        carousel.params.direction === 'horizontal' &&\r\n        (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\r\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\r\n    });\r\n\r\n    return true;\r\n  }\r\n\r\n  init(el) {\r\n    const carousel = this;\r\n    if (carousel.initialized) return carousel;\r\n\r\n    const mounted = carousel.mount(el);\r\n    if (mounted === false) return carousel;\r\n\r\n    carousel.emit('beforeInit');\r\n\r\n    // Set breakpoint\r\n    if (carousel.params.breakpoints) {\r\n      carousel.setBreakpoint();\r\n    }\r\n\r\n    // Add Classes\r\n    carousel.addClasses();\r\n\r\n    // Create loop\r\n    if (carousel.params.loop) {\r\n      carousel.loopCreate();\r\n    }\r\n\r\n    // Update size\r\n    carousel.updateSize();\r\n\r\n    // Update slides\r\n    carousel.updateSlides();\r\n\r\n    if (carousel.params.watchOverflow) {\r\n      carousel.checkOverflow();\r\n    }\r\n\r\n    // Set Grab Cursor\r\n    if (carousel.params.grabCursor && carousel.enabled) {\r\n      carousel.setGrabCursor();\r\n    }\r\n\r\n    if (carousel.params.preloadImages) {\r\n      carousel.preloadImages();\r\n    }\r\n\r\n    // Slide To Initial Slide\r\n    if (carousel.params.loop) {\r\n      carousel.slideTo(\r\n        carousel.params.initialSlide + carousel.loopedSlides,\r\n        0,\r\n        carousel.params.runCallbacksOnInit,\r\n        false,\r\n        true\r\n      );\r\n    } else {\r\n      carousel.slideTo(\r\n        carousel.params.initialSlide,\r\n        0,\r\n        carousel.params.runCallbacksOnInit,\r\n        false,\r\n        true\r\n      );\r\n    }\r\n\r\n    // Attach events\r\n    carousel.attachEvents();\r\n\r\n    // Init Flag\r\n    carousel.initialized = true;\r\n\r\n    // Emit\r\n    carousel.emit('init');\r\n    carousel.emit('afterInit');\r\n\r\n    return carousel;\r\n  }\r\n\r\n  destroy(deleteInstance = true, cleanStyles = true) {\r\n    const carousel = this;\r\n    const { params, $el, $wrapperEl, slides } = carousel;\r\n\r\n    if (typeof carousel.params === 'undefined' || carousel.destroyed) {\r\n      return null;\r\n    }\r\n\r\n    carousel.emit('beforeDestroy');\r\n\r\n    // Init Flag\r\n    carousel.initialized = false;\r\n\r\n    // Detach events\r\n    carousel.detachEvents();\r\n\r\n    // Destroy loop\r\n    if (params.loop) {\r\n      carousel.loopDestroy();\r\n    }\r\n\r\n    // Cleanup styles\r\n    if (cleanStyles) {\r\n      carousel.removeClasses();\r\n      $el.removeAttr('style');\r\n      $wrapperEl.removeAttr('style');\r\n      if (slides && slides.length) {\r\n        slides\r\n          .removeClass(\r\n            [\r\n              params.slideVisibleClass,\r\n              params.slideActiveClass,\r\n              params.slideNextClass,\r\n              params.slidePrevClass\r\n            ].join(' ')\r\n          )\r\n          .removeAttr('style')\r\n          .removeAttr('data-carousel-slide-index');\r\n      }\r\n    }\r\n\r\n    carousel.emit('destroy');\r\n\r\n    // Detach emitter events\r\n    Object.keys(carousel.eventsListeners).forEach(eventName => {\r\n      carousel.off(eventName);\r\n    });\r\n\r\n    if (deleteInstance !== false) {\r\n      carousel.$el[0].carousel = null;\r\n      deleteProps(carousel);\r\n    }\r\n    carousel.destroyed = true;\r\n\r\n    return null;\r\n  }\r\n\r\n  static extendDefaults(newDefaults) {\r\n    extend(extendedDefaults, newDefaults);\r\n  }\r\n\r\n  static get extendedDefaults() {\r\n    return extendedDefaults;\r\n  }\r\n\r\n  static get defaults() {\r\n    return defaults;\r\n  }\r\n\r\n  static installModule(mod) {\r\n    if (!Carousel.prototype.__modules__) Carousel.prototype.__modules__ = [];\r\n    const modules = Carousel.prototype.__modules__;\r\n\r\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\r\n      modules.push(mod);\r\n    }\r\n  }\r\n\r\n  static use(module) {\r\n    if (Array.isArray(module)) {\r\n      module.forEach(m => Carousel.installModule(m));\r\n      return Carousel;\r\n    }\r\n    Carousel.installModule(module);\r\n    return Carousel;\r\n  }\r\n}\r\n\r\nObject.keys(prototypes).forEach(prototypeGroup => {\r\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\r\n    Carousel.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\r\n  });\r\n});\r\n\r\nCarousel.use([Resize, Observer, Autoplay, Navigation, Pagination]);\r\n\r\nexport default Carousel;\r\n","//@ts-nocheck\r\nimport $ from '../../../shared/dom';\r\nimport { setCSSProperty } from '../../../shared/utils';\r\n\r\nexport default function Virtual({ carousel, extendParams, on, emit }) {\r\n  extendParams({\r\n    virtual: {\r\n      enabled: false,\r\n      slides: [],\r\n      cache: true,\r\n      renderSlide: null,\r\n      renderExternal: null,\r\n      renderExternalUpdate: true,\r\n      addSlidesBefore: 0,\r\n      addSlidesAfter: 0\r\n    }\r\n  });\r\n\r\n  let cssModeTimeout;\r\n\r\n  carousel.virtual = {\r\n    cache: {},\r\n    from: undefined,\r\n    to: undefined,\r\n    slides: [],\r\n    offset: 0,\r\n    slidesGrid: []\r\n  };\r\n\r\n  function renderSlide(slide, index) {\r\n    const params = carousel.params.virtual;\r\n    if (params.cache && carousel.virtual.cache[index]) {\r\n      return carousel.virtual.cache[index];\r\n    }\r\n    const $slideEl = params.renderSlide\r\n      ? $(params.renderSlide.call(carousel, slide, index))\r\n      : $(\r\n          `<div class=\"${carousel.params.slideClass}\" data-carousel-slide-index=\"${index}\">${slide}</div>`\r\n        );\r\n    if (!$slideEl.attr('data-carousel-slide-index'))\r\n      $slideEl.attr('data-carousel-slide-index', index);\r\n    if (params.cache) carousel.virtual.cache[index] = $slideEl;\r\n    return $slideEl;\r\n  }\r\n\r\n  function update(force) {\r\n    const { slidesPerView, slidesPerGroup, centeredSlides } = carousel.params;\r\n    const { addSlidesBefore, addSlidesAfter } = carousel.params.virtual;\r\n    const {\r\n      from: previousFrom,\r\n      to: previousTo,\r\n      slides,\r\n      slidesGrid: previousSlidesGrid,\r\n      offset: previousOffset\r\n    } = carousel.virtual;\r\n    if (!carousel.params.cssMode) {\r\n      carousel.updateActiveIndex();\r\n    }\r\n\r\n    const activeIndex = carousel.activeIndex || 0;\r\n\r\n    let offsetProp;\r\n    if (carousel.rtlTranslate) offsetProp = 'right';\r\n    else offsetProp = carousel.isHorizontal() ? 'left' : 'top';\r\n\r\n    let slidesAfter;\r\n    let slidesBefore;\r\n    if (centeredSlides) {\r\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\r\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\r\n    } else {\r\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\r\n      slidesBefore = slidesPerGroup + addSlidesBefore;\r\n    }\r\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\r\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\r\n    const offset = (carousel.slidesGrid[from] || 0) - (carousel.slidesGrid[0] || 0);\r\n\r\n    Object.assign(carousel.virtual, {\r\n      from,\r\n      to,\r\n      offset,\r\n      slidesGrid: carousel.slidesGrid\r\n    });\r\n\r\n    function onRendered() {\r\n      carousel.updateSlides();\r\n      carousel.updateProgress();\r\n      carousel.updateSlidesClasses();\r\n      if (carousel.lazy && carousel.params.lazy.enabled) {\r\n        carousel.lazy.load();\r\n      }\r\n      emit('virtualUpdate');\r\n    }\r\n\r\n    if (previousFrom === from && previousTo === to && !force) {\r\n      if (carousel.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\r\n        carousel.slides.css(offsetProp, `${offset}px`);\r\n      }\r\n      carousel.updateProgress();\r\n      emit('virtualUpdate');\r\n      return;\r\n    }\r\n    if (carousel.params.virtual.renderExternal) {\r\n      carousel.params.virtual.renderExternal.call(carousel, {\r\n        offset,\r\n        from,\r\n        to,\r\n        slides: (function getSlides() {\r\n          const slidesToRender = [];\r\n          for (let i = from; i <= to; i += 1) {\r\n            slidesToRender.push(slides[i]);\r\n          }\r\n          return slidesToRender;\r\n        })()\r\n      });\r\n      if (carousel.params.virtual.renderExternalUpdate) {\r\n        onRendered();\r\n      } else {\r\n        emit('virtualUpdate');\r\n      }\r\n      return;\r\n    }\r\n    const prependIndexes = [];\r\n    const appendIndexes = [];\r\n    if (force) {\r\n      carousel.$wrapperEl.find(`.${carousel.params.slideClass}`).remove();\r\n    } else {\r\n      for (let i = previousFrom; i <= previousTo; i += 1) {\r\n        if (i < from || i > to) {\r\n          carousel.$wrapperEl\r\n            .find(`.${carousel.params.slideClass}[data-carousel-slide-index=\"${i}\"]`)\r\n            .remove();\r\n        }\r\n      }\r\n    }\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      if (i >= from && i <= to) {\r\n        if (typeof previousTo === 'undefined' || force) {\r\n          appendIndexes.push(i);\r\n        } else {\r\n          if (i > previousTo) appendIndexes.push(i);\r\n          if (i < previousFrom) prependIndexes.push(i);\r\n        }\r\n      }\r\n    }\r\n    appendIndexes.forEach(index => {\r\n      carousel.$wrapperEl.append(renderSlide(slides[index], index));\r\n    });\r\n    prependIndexes\r\n      .sort((a, b) => b - a)\r\n      .forEach(index => {\r\n        carousel.$wrapperEl.prepend(renderSlide(slides[index], index));\r\n      });\r\n    carousel.$wrapperEl.children('.vts-carousel-slide').css(offsetProp, `${offset}px`);\r\n    onRendered();\r\n  }\r\n\r\n  function appendSlide(slides) {\r\n    if (typeof slides === 'object' && 'length' in slides) {\r\n      for (let i = 0; i < slides.length; i += 1) {\r\n        if (slides[i]) carousel.virtual.slides.push(slides[i]);\r\n      }\r\n    } else {\r\n      carousel.virtual.slides.push(slides);\r\n    }\r\n    update(true);\r\n  }\r\n  function prependSlide(slides) {\r\n    const activeIndex = carousel.activeIndex;\r\n    let newActiveIndex = activeIndex + 1;\r\n    let numberOfNewSlides = 1;\r\n\r\n    if (Array.isArray(slides)) {\r\n      for (let i = 0; i < slides.length; i += 1) {\r\n        if (slides[i]) carousel.virtual.slides.unshift(slides[i]);\r\n      }\r\n      newActiveIndex = activeIndex + slides.length;\r\n      numberOfNewSlides = slides.length;\r\n    } else {\r\n      carousel.virtual.slides.unshift(slides);\r\n    }\r\n    if (carousel.params.virtual.cache) {\r\n      const cache = carousel.virtual.cache;\r\n      const newCache = {};\r\n      Object.keys(cache).forEach(cachedIndex => {\r\n        const $cachedEl = cache[cachedIndex];\r\n        const cachedElIndex = $cachedEl.attr('data-carousel-slide-index');\r\n        if (cachedElIndex) {\r\n          $cachedEl.attr(\r\n            'data-carousel-slide-index',\r\n            parseInt(cachedElIndex, 10) + numberOfNewSlides\r\n          );\r\n        }\r\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\r\n      });\r\n      carousel.virtual.cache = newCache;\r\n    }\r\n    update(true);\r\n    carousel.slideTo(newActiveIndex, 0);\r\n  }\r\n  function removeSlide(slidesIndexes) {\r\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\r\n    let activeIndex = carousel.activeIndex;\r\n    if (Array.isArray(slidesIndexes)) {\r\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\r\n        carousel.virtual.slides.splice(slidesIndexes[i], 1);\r\n        if (carousel.params.virtual.cache) {\r\n          delete carousel.virtual.cache[slidesIndexes[i]];\r\n        }\r\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\r\n        activeIndex = Math.max(activeIndex, 0);\r\n      }\r\n    } else {\r\n      carousel.virtual.slides.splice(slidesIndexes, 1);\r\n      if (carousel.params.virtual.cache) {\r\n        delete carousel.virtual.cache[slidesIndexes];\r\n      }\r\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\r\n      activeIndex = Math.max(activeIndex, 0);\r\n    }\r\n    update(true);\r\n    carousel.slideTo(activeIndex, 0);\r\n  }\r\n  function removeAllSlides() {\r\n    carousel.virtual.slides = [];\r\n    if (carousel.params.virtual.cache) {\r\n      carousel.virtual.cache = {};\r\n    }\r\n    update(true);\r\n    carousel.slideTo(0, 0);\r\n  }\r\n\r\n  on('beforeInit', () => {\r\n    if (!carousel.params.virtual.enabled) return;\r\n    carousel.virtual.slides = carousel.params.virtual.slides;\r\n    carousel.classNames.push(`${carousel.params.containerModifierClass}virtual`);\r\n\r\n    carousel.params.watchSlidesProgress = true;\r\n    carousel.originalParams.watchSlidesProgress = true;\r\n\r\n    if (!carousel.params.initialSlide) {\r\n      update();\r\n    }\r\n  });\r\n  on('setTranslate', () => {\r\n    if (!carousel.params.virtual.enabled) return;\r\n    if (carousel.params.cssMode && !carousel._immediateVirtual) {\r\n      clearTimeout(cssModeTimeout);\r\n      cssModeTimeout = setTimeout(() => {\r\n        update();\r\n      }, 100);\r\n    } else {\r\n      update();\r\n    }\r\n  });\r\n  on('init update resize', () => {\r\n    if (!carousel.params.virtual.enabled) return;\r\n    if (carousel.params.cssMode) {\r\n      setCSSProperty(carousel.wrapperEl, '--carousel-virtual-size', `${carousel.virtualSize}px`);\r\n    }\r\n  });\r\n\r\n  Object.assign(carousel.virtual, {\r\n    appendSlide,\r\n    prependSlide,\r\n    removeSlide,\r\n    removeAllSlides,\r\n    update\r\n  });\r\n}\r\n","//@ts-nocheck\r\n/* eslint-disable consistent-return */\r\nimport { getWindow, getDocument } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function Keyboard({ carousel, extendParams, on, emit }) {\r\n  const document = getDocument();\r\n  const window = getWindow();\r\n  carousel.keyboard = {\r\n    enabled: false\r\n  };\r\n  extendParams({\r\n    keyboard: {\r\n      enabled: false,\r\n      onlyInViewport: true,\r\n      pageUpDown: true\r\n    }\r\n  });\r\n\r\n  function handle(event) {\r\n    if (!carousel.enabled) return;\r\n\r\n    const { rtlTranslate: rtl } = carousel;\r\n    let e = event;\r\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\r\n    const kc = e.keyCode || e.charCode;\r\n    const pageUpDown = carousel.params.keyboard.pageUpDown;\r\n    const isPageUp = pageUpDown && kc === 33;\r\n    const isPageDown = pageUpDown && kc === 34;\r\n    const isArrowLeft = kc === 37;\r\n    const isArrowRight = kc === 39;\r\n    const isArrowUp = kc === 38;\r\n    const isArrowDown = kc === 40;\r\n    // Directions locks\r\n    if (\r\n      !carousel.allowSlideNext &&\r\n      ((carousel.isHorizontal() && isArrowRight) ||\r\n        (carousel.isVertical() && isArrowDown) ||\r\n        isPageDown)\r\n    ) {\r\n      return false;\r\n    }\r\n    if (\r\n      !carousel.allowSlidePrev &&\r\n      ((carousel.isHorizontal() && isArrowLeft) || (carousel.isVertical() && isArrowUp) || isPageUp)\r\n    ) {\r\n      return false;\r\n    }\r\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\r\n      return undefined;\r\n    }\r\n    if (\r\n      document.activeElement &&\r\n      document.activeElement.nodeName &&\r\n      (document.activeElement.nodeName.toLowerCase() === 'input' ||\r\n        document.activeElement.nodeName.toLowerCase() === 'textarea')\r\n    ) {\r\n      return undefined;\r\n    }\r\n    if (\r\n      carousel.params.keyboard.onlyInViewport &&\r\n      (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\r\n    ) {\r\n      let inView = false;\r\n      // Check that carousel should be inside of visible area of window\r\n      if (\r\n        carousel.$el.parents(`.${carousel.params.slideClass}`).length > 0 &&\r\n        carousel.$el.parents(`.${carousel.params.slideActiveClass}`).length === 0\r\n      ) {\r\n        return undefined;\r\n      }\r\n\r\n      const $el = carousel.$el;\r\n      const carouselWidth = $el[0].clientWidth;\r\n      const carouselHeight = $el[0].clientHeight;\r\n      const windowWidth = window.innerWidth;\r\n      const windowHeight = window.innerHeight;\r\n      const carouselOffset = carousel.$el.offset();\r\n      if (rtl) carouselOffset.left -= carousel.$el[0].scrollLeft;\r\n      const carouselCoord = [\r\n        [carouselOffset.left, carouselOffset.top],\r\n        [carouselOffset.left + carouselWidth, carouselOffset.top],\r\n        [carouselOffset.left, carouselOffset.top + carouselHeight],\r\n        [carouselOffset.left + carouselWidth, carouselOffset.top + carouselHeight]\r\n      ];\r\n      for (let i = 0; i < carouselCoord.length; i += 1) {\r\n        const point = carouselCoord[i];\r\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\r\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\r\n          inView = true;\r\n        }\r\n      }\r\n      if (!inView) return undefined;\r\n    }\r\n    if (carousel.isHorizontal()) {\r\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\r\n        if (e.preventDefault) e.preventDefault();\r\n        else e.returnValue = false;\r\n      }\r\n      if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\r\n        carousel.slideNext();\r\n      if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\r\n        carousel.slidePrev();\r\n    } else {\r\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\r\n        if (e.preventDefault) e.preventDefault();\r\n        else e.returnValue = false;\r\n      }\r\n      if (isPageDown || isArrowDown) carousel.slideNext();\r\n      if (isPageUp || isArrowUp) carousel.slidePrev();\r\n    }\r\n    emit('keyPress', kc);\r\n    return undefined;\r\n  }\r\n  function enable() {\r\n    if (carousel.keyboard.enabled) return;\r\n    $(document).on('keydown', handle);\r\n    carousel.keyboard.enabled = true;\r\n  }\r\n  function disable() {\r\n    if (!carousel.keyboard.enabled) return;\r\n    $(document).off('keydown', handle);\r\n    carousel.keyboard.enabled = false;\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.keyboard.enabled) {\r\n      enable();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    if (carousel.keyboard.enabled) {\r\n      disable();\r\n    }\r\n  });\r\n\r\n  Object.assign(carousel.keyboard, {\r\n    enable,\r\n    disable\r\n  });\r\n}\r\n","//@ts-nocheck\r\n/* eslint-disable consistent-return */\r\nimport { getWindow } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\nimport { now, nextTick } from '../../../shared/utils';\r\n\r\nexport default function Mousewheel({ carousel, extendParams, on, emit }) {\r\n  const window = getWindow();\r\n\r\n  extendParams({\r\n    mousewheel: {\r\n      enabled: false,\r\n      releaseOnEdges: false,\r\n      invert: false,\r\n      forceToAxis: false,\r\n      sensitivity: 1,\r\n      eventsTarget: 'container',\r\n      thresholdDelta: null,\r\n      thresholdTime: null\r\n    }\r\n  });\r\n\r\n  carousel.mousewheel = {\r\n    enabled: false\r\n  };\r\n\r\n  let timeout;\r\n  let lastScrollTime = now();\r\n  let lastEventBeforeSnap;\r\n  const recentWheelEvents = [];\r\n\r\n  function normalize(e) {\r\n    // Reasonable defaults\r\n    const PIXEL_STEP = 10;\r\n    const LINE_HEIGHT = 40;\r\n    const PAGE_HEIGHT = 800;\r\n\r\n    let sX = 0;\r\n    let sY = 0; // spinX, spinY\r\n    let pX = 0;\r\n    let pY = 0; // pixelX, pixelY\r\n\r\n    // Legacy\r\n    if ('detail' in e) {\r\n      sY = e.detail;\r\n    }\r\n    if ('wheelDelta' in e) {\r\n      sY = -e.wheelDelta / 120;\r\n    }\r\n    if ('wheelDeltaY' in e) {\r\n      sY = -e.wheelDeltaY / 120;\r\n    }\r\n    if ('wheelDeltaX' in e) {\r\n      sX = -e.wheelDeltaX / 120;\r\n    }\r\n\r\n    // side scrolling on FF with DOMMouseScroll\r\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\r\n      sX = sY;\r\n      sY = 0;\r\n    }\r\n\r\n    pX = sX * PIXEL_STEP;\r\n    pY = sY * PIXEL_STEP;\r\n\r\n    if ('deltaY' in e) {\r\n      pY = e.deltaY;\r\n    }\r\n    if ('deltaX' in e) {\r\n      pX = e.deltaX;\r\n    }\r\n\r\n    if (e.shiftKey && !pX) {\r\n      // if user scrolls with shift he wants horizontal scroll\r\n      pX = pY;\r\n      pY = 0;\r\n    }\r\n\r\n    if ((pX || pY) && e.deltaMode) {\r\n      if (e.deltaMode === 1) {\r\n        // delta in LINE units\r\n        pX *= LINE_HEIGHT;\r\n        pY *= LINE_HEIGHT;\r\n      } else {\r\n        // delta in PAGE units\r\n        pX *= PAGE_HEIGHT;\r\n        pY *= PAGE_HEIGHT;\r\n      }\r\n    }\r\n\r\n    // Fall-back if spin cannot be determined\r\n    if (pX && !sX) {\r\n      sX = pX < 1 ? -1 : 1;\r\n    }\r\n    if (pY && !sY) {\r\n      sY = pY < 1 ? -1 : 1;\r\n    }\r\n\r\n    return {\r\n      spinX: sX,\r\n      spinY: sY,\r\n      pixelX: pX,\r\n      pixelY: pY\r\n    };\r\n  }\r\n  function handleMouseEnter() {\r\n    if (!carousel.enabled) return;\r\n    carousel.mouseEntered = true;\r\n  }\r\n  function handleMouseLeave() {\r\n    if (!carousel.enabled) return;\r\n    carousel.mouseEntered = false;\r\n  }\r\n  function animateSlider(newEvent) {\r\n    if (\r\n      carousel.params.mousewheel.thresholdDelta &&\r\n      newEvent.delta < carousel.params.mousewheel.thresholdDelta\r\n    ) {\r\n      // Prevent if delta of wheel scroll delta is below configured threshold\r\n      return false;\r\n    }\r\n\r\n    if (\r\n      carousel.params.mousewheel.thresholdTime &&\r\n      now() - lastScrollTime < carousel.params.mousewheel.thresholdTime\r\n    ) {\r\n      // Prevent if time between scrolls is below configured threshold\r\n      return false;\r\n    }\r\n\r\n    // If the movement is NOT big enough and\r\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\r\n    //   Don't go any further (avoid insignificant scroll movement).\r\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\r\n      // Return false as a default\r\n      return true;\r\n    }\r\n    // If user is scrolling towards the end:\r\n    //   If the slider hasn't hit the latest slide or\r\n    //   if the slider is a loop and\r\n    //   if the slider isn't moving right now:\r\n    //     Go to next slide and\r\n    //     emit a scroll event.\r\n    // Else (the user is scrolling towards the beginning) and\r\n    // if the slider hasn't hit the first slide or\r\n    // if the slider is a loop and\r\n    // if the slider isn't moving right now:\r\n    //   Go to prev slide and\r\n    //   emit a scroll event.\r\n    if (newEvent.direction < 0) {\r\n      if ((!carousel.isEnd || carousel.params.loop) && !carousel.animating) {\r\n        carousel.slideNext();\r\n        emit('scroll', newEvent.raw);\r\n      }\r\n    } else if ((!carousel.isBeginning || carousel.params.loop) && !carousel.animating) {\r\n      carousel.slidePrev();\r\n      emit('scroll', newEvent.raw);\r\n    }\r\n    // If you got here is because an animation has been triggered so store the current time\r\n    lastScrollTime = new window.Date().getTime();\r\n    // Return false as a default\r\n    return false;\r\n  }\r\n  function releaseScroll(newEvent) {\r\n    const params = carousel.params.mousewheel;\r\n    if (newEvent.direction < 0) {\r\n      if (carousel.isEnd && !carousel.params.loop && params.releaseOnEdges) {\r\n        // Return true to animate scroll on edges\r\n        return true;\r\n      }\r\n    } else if (carousel.isBeginning && !carousel.params.loop && params.releaseOnEdges) {\r\n      // Return true to animate scroll on edges\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n  function handle(event) {\r\n    let e = event;\r\n    let disableParentcarousel = true;\r\n    if (!carousel.enabled) return;\r\n    const params = carousel.params.mousewheel;\r\n\r\n    if (carousel.params.cssMode) {\r\n      e.preventDefault();\r\n    }\r\n\r\n    let target = carousel.$el;\r\n    if (carousel.params.mousewheel.eventsTarget !== 'container') {\r\n      target = $(carousel.params.mousewheel.eventsTarget);\r\n    }\r\n    if (!carousel.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\r\n      return true;\r\n\r\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\r\n    let delta = 0;\r\n    const rtlFactor = carousel.rtlTranslate ? -1 : 1;\r\n\r\n    const data = normalize(e);\r\n\r\n    if (params.forceToAxis) {\r\n      if (carousel.isHorizontal()) {\r\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\r\n        else return true;\r\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\r\n      else return true;\r\n    } else {\r\n      delta =\r\n        Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\r\n    }\r\n\r\n    if (delta === 0) return true;\r\n\r\n    if (params.invert) delta = -delta;\r\n\r\n    // Get the scroll positions\r\n    let positions = carousel.getTranslate() + delta * params.sensitivity;\r\n\r\n    if (positions >= carousel.minTranslate()) positions = carousel.minTranslate();\r\n    if (positions <= carousel.maxTranslate()) positions = carousel.maxTranslate();\r\n\r\n    // When loop is true:\r\n    //     the disableParentcarousel will be true.\r\n    // When loop is false:\r\n    //     if the scroll positions is not on edge,\r\n    //     then the disableParentcarousel will be true.\r\n    //     if the scroll on edge positions,\r\n    //     then the disableParentcarousel will be false.\r\n    disableParentcarousel = carousel.params.loop\r\n      ? true\r\n      : !(positions === carousel.minTranslate() || positions === carousel.maxTranslate());\r\n\r\n    if (disableParentcarousel && carousel.params.nested) e.stopPropagation();\r\n\r\n    if (!carousel.params.freeMode || !carousel.params.freeMode.enabled) {\r\n      // Register the new event in a variable which stores the relevant data\r\n      const newEvent = {\r\n        time: now(),\r\n        delta: Math.abs(delta),\r\n        direction: Math.sign(delta),\r\n        raw: event\r\n      };\r\n\r\n      // Keep the most recent events\r\n      if (recentWheelEvents.length >= 2) {\r\n        recentWheelEvents.shift(); // only store the last N events\r\n      }\r\n      const prevEvent = recentWheelEvents.length\r\n        ? recentWheelEvents[recentWheelEvents.length - 1]\r\n        : undefined;\r\n      recentWheelEvents.push(newEvent);\r\n\r\n      // If there is at least one previous recorded event:\r\n      //   If direction has changed or\r\n      //   if the scroll is quicker than the previous one:\r\n      //     Animate the slider.\r\n      // Else (this is the first time the wheel is moved):\r\n      //     Animate the slider.\r\n      if (prevEvent) {\r\n        if (\r\n          newEvent.direction !== prevEvent.direction ||\r\n          newEvent.delta > prevEvent.delta ||\r\n          newEvent.time > prevEvent.time + 150\r\n        ) {\r\n          animateSlider(newEvent);\r\n        }\r\n      } else {\r\n        animateSlider(newEvent);\r\n      }\r\n\r\n      // If it's time to release the scroll:\r\n      //   Return now so you don't hit the preventDefault.\r\n      if (releaseScroll(newEvent)) {\r\n        return true;\r\n      }\r\n    } else {\r\n      // Freemode or scrollContainer:\r\n\r\n      // If we recently snapped after a momentum scroll, then ignore wheel events\r\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\r\n      // or if it's a new scroll (larger delta or inverse sign as last event before\r\n      // an end-of-momentum snap).\r\n      const newEvent = {\r\n        time: now(),\r\n        delta: Math.abs(delta),\r\n        direction: Math.sign(delta)\r\n      };\r\n      const ignoreWheelEvents =\r\n        lastEventBeforeSnap &&\r\n        newEvent.time < lastEventBeforeSnap.time + 500 &&\r\n        newEvent.delta <= lastEventBeforeSnap.delta &&\r\n        newEvent.direction === lastEventBeforeSnap.direction;\r\n      if (!ignoreWheelEvents) {\r\n        lastEventBeforeSnap = undefined;\r\n\r\n        if (carousel.params.loop) {\r\n          carousel.loopFix();\r\n        }\r\n        let position = carousel.getTranslate() + delta * params.sensitivity;\r\n        const wasBeginning = carousel.isBeginning;\r\n        const wasEnd = carousel.isEnd;\r\n\r\n        if (position >= carousel.minTranslate()) position = carousel.minTranslate();\r\n        if (position <= carousel.maxTranslate()) position = carousel.maxTranslate();\r\n\r\n        carousel.setTransition(0);\r\n        carousel.setTranslate(position);\r\n        carousel.updateProgress();\r\n        carousel.updateActiveIndex();\r\n        carousel.updateSlidesClasses();\r\n\r\n        if ((!wasBeginning && carousel.isBeginning) || (!wasEnd && carousel.isEnd)) {\r\n          carousel.updateSlidesClasses();\r\n        }\r\n\r\n        if (carousel.params.freeMode.sticky) {\r\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\r\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\r\n          // 1. do all N events have decreasing or same (absolute value) delta?\r\n          // 2. did all N events arrive in the last M (M=500?) msecs?\r\n          // 3. does the earliest event have an (absolute value) delta that's\r\n          //    at least P (P=1?) larger than the most recent event's delta?\r\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\r\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\r\n          // Snap immediately and ignore remaining wheel events in this scroll.\r\n          // See comment above for \"remaining wheel events in this scroll\" determination.\r\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\r\n          clearTimeout(timeout);\r\n          timeout = undefined;\r\n          if (recentWheelEvents.length >= 15) {\r\n            recentWheelEvents.shift(); // only store the last N events\r\n          }\r\n          const prevEvent = recentWheelEvents.length\r\n            ? recentWheelEvents[recentWheelEvents.length - 1]\r\n            : undefined;\r\n          const firstEvent = recentWheelEvents[0];\r\n          recentWheelEvents.push(newEvent);\r\n          if (\r\n            prevEvent &&\r\n            (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\r\n          ) {\r\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\r\n            recentWheelEvents.splice(0);\r\n          } else if (\r\n            recentWheelEvents.length >= 15 &&\r\n            newEvent.time - firstEvent.time < 500 &&\r\n            firstEvent.delta - newEvent.delta >= 1 &&\r\n            newEvent.delta <= 6\r\n          ) {\r\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\r\n            // to wait for more events. Snap ASAP on the next tick.\r\n            // Also, because there's some remaining momentum we'll bias the snap in the\r\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\r\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\r\n            // if it's already scrolled more than 20% in the current direction, keep going.\r\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\r\n            lastEventBeforeSnap = newEvent;\r\n            recentWheelEvents.splice(0);\r\n            timeout = nextTick(() => {\r\n              carousel.slideToClosest(carousel.params.speed, true, undefined, snapToThreshold);\r\n            }, 0); // no delay; move on next tick\r\n          }\r\n          if (!timeout) {\r\n            // if we get here, then we haven't detected the end of a momentum scroll, so\r\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\r\n            // for 500ms.\r\n            timeout = nextTick(() => {\r\n              const snapToThreshold = 0.5;\r\n              lastEventBeforeSnap = newEvent;\r\n              recentWheelEvents.splice(0);\r\n              carousel.slideToClosest(carousel.params.speed, true, undefined, snapToThreshold);\r\n            }, 500);\r\n          }\r\n        }\r\n\r\n        // Emit event\r\n        if (!ignoreWheelEvents) emit('scroll', e);\r\n\r\n        // Stop autoplay\r\n        if (carousel.params.autoplay && carousel.params.autoplayDisableOnInteraction)\r\n          carousel.autoplay.stop();\r\n        // Return page scroll on edge positions\r\n        if (position === carousel.minTranslate() || position === carousel.maxTranslate())\r\n          return true;\r\n      }\r\n    }\r\n\r\n    if (e.preventDefault) e.preventDefault();\r\n    else e.returnValue = false;\r\n    return false;\r\n  }\r\n\r\n  function events(method) {\r\n    let target = carousel.$el;\r\n    if (carousel.params.mousewheel.eventsTarget !== 'container') {\r\n      target = $(carousel.params.mousewheel.eventsTarget);\r\n    }\r\n    target[method]('mouseenter', handleMouseEnter);\r\n    target[method]('mouseleave', handleMouseLeave);\r\n    target[method]('wheel', handle);\r\n  }\r\n\r\n  function enable() {\r\n    if (carousel.params.cssMode) {\r\n      carousel.wrapperEl.removeEventListener('wheel', handle);\r\n      return true;\r\n    }\r\n    if (carousel.mousewheel.enabled) return false;\r\n    events('on');\r\n    carousel.mousewheel.enabled = true;\r\n    return true;\r\n  }\r\n  function disable() {\r\n    if (carousel.params.cssMode) {\r\n      carousel.wrapperEl.addEventListener(event, handle);\r\n      return true;\r\n    }\r\n    if (!carousel.mousewheel.enabled) return false;\r\n    events('off');\r\n    carousel.mousewheel.enabled = false;\r\n    return true;\r\n  }\r\n\r\n  on('init', () => {\r\n    if (!carousel.params.mousewheel.enabled && carousel.params.cssMode) {\r\n      disable();\r\n    }\r\n    if (carousel.params.mousewheel.enabled) enable();\r\n  });\r\n  on('destroy', () => {\r\n    if (carousel.params.cssMode) {\r\n      enable();\r\n    }\r\n    if (carousel.mousewheel.enabled) disable();\r\n  });\r\n\r\n  Object.assign(carousel.mousewheel, {\r\n    enable,\r\n    disable\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getDocument } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\nimport { nextTick } from '../../../shared/utils';\r\nimport createElementIfNotDefined from '../../../shared/create-element-if-not-defined';\r\n\r\nexport default function Scrollbar({ carousel, extendParams, on, emit }) {\r\n  const document = getDocument();\r\n\r\n  let isTouched = false;\r\n  let timeout = null;\r\n  let dragTimeout = null;\r\n  let dragStartPos;\r\n  let dragSize;\r\n  let trackSize;\r\n  let divider;\r\n\r\n  extendParams({\r\n    scrollbar: {\r\n      el: null,\r\n      dragSize: 'auto',\r\n      hide: false,\r\n      draggable: false,\r\n      snapOnRelease: true,\r\n      lockClass: 'vts-carousel-scrollbar-lock',\r\n      dragClass: 'vts-carousel-scrollbar-drag',\r\n      scrollbarDisabledClass: 'vts-carousel-scrollbar-disabled',\r\n      horizontalClass: `carousel-scrollbar-horizontal`,\r\n      verticalClass: `carousel-scrollbar-vertical`\r\n    }\r\n  });\r\n\r\n  carousel.scrollbar = {\r\n    el: null,\r\n    dragEl: null,\r\n    $el: null,\r\n    $dragEl: null\r\n  };\r\n\r\n  function setTranslate() {\r\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\r\n    const { scrollbar, rtlTranslate: rtl, progress } = carousel;\r\n    const { $dragEl, $el } = scrollbar;\r\n    const params = carousel.params.scrollbar;\r\n\r\n    let newSize = dragSize;\r\n    let newPos = (trackSize - dragSize) * progress;\r\n    if (rtl) {\r\n      newPos = -newPos;\r\n      if (newPos > 0) {\r\n        newSize = dragSize - newPos;\r\n        newPos = 0;\r\n      } else if (-newPos + dragSize > trackSize) {\r\n        newSize = trackSize + newPos;\r\n      }\r\n    } else if (newPos < 0) {\r\n      newSize = dragSize + newPos;\r\n      newPos = 0;\r\n    } else if (newPos + dragSize > trackSize) {\r\n      newSize = trackSize - newPos;\r\n    }\r\n    if (carousel.isHorizontal()) {\r\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\r\n      $dragEl[0].style.width = `${newSize}px`;\r\n    } else {\r\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\r\n      $dragEl[0].style.height = `${newSize}px`;\r\n    }\r\n    if (params.hide) {\r\n      clearTimeout(timeout);\r\n      $el[0].style.opacity = 1;\r\n      timeout = setTimeout(() => {\r\n        $el[0].style.opacity = 0;\r\n        $el.transition(400);\r\n      }, 1000);\r\n    }\r\n  }\r\n  function setTransition(duration) {\r\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\r\n    carousel.scrollbar.$dragEl.transition(duration);\r\n  }\r\n  function updateSize() {\r\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\r\n\r\n    const { scrollbar } = carousel;\r\n    const { $dragEl, $el } = scrollbar;\r\n\r\n    $dragEl[0].style.width = '';\r\n    $dragEl[0].style.height = '';\r\n    trackSize = carousel.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\r\n\r\n    divider =\r\n      carousel.size /\r\n      (carousel.virtualSize +\r\n        carousel.params.slidesOffsetBefore -\r\n        (carousel.params.centeredSlides ? carousel.snapGrid[0] : 0));\r\n    if (carousel.params.scrollbar.dragSize === 'auto') {\r\n      dragSize = trackSize * divider;\r\n    } else {\r\n      dragSize = parseInt(carousel.params.scrollbar.dragSize, 10);\r\n    }\r\n\r\n    if (carousel.isHorizontal()) {\r\n      $dragEl[0].style.width = `${dragSize}px`;\r\n    } else {\r\n      $dragEl[0].style.height = `${dragSize}px`;\r\n    }\r\n\r\n    if (divider >= 1) {\r\n      $el[0].style.display = 'none';\r\n    } else {\r\n      $el[0].style.display = '';\r\n    }\r\n    if (carousel.params.scrollbar.hide) {\r\n      $el[0].style.opacity = 0;\r\n    }\r\n\r\n    if (carousel.params.watchOverflow && carousel.enabled) {\r\n      scrollbar.$el[carousel.isLocked ? 'addClass' : 'removeClass'](\r\n        carousel.params.scrollbar.lockClass\r\n      );\r\n    }\r\n  }\r\n  function getPointerPosition(e) {\r\n    if (carousel.isHorizontal()) {\r\n      return e.type === 'touchstart' || e.type === 'touchmove'\r\n        ? e.targetTouches[0].clientX\r\n        : e.clientX;\r\n    }\r\n    return e.type === 'touchstart' || e.type === 'touchmove'\r\n      ? e.targetTouches[0].clientY\r\n      : e.clientY;\r\n  }\r\n  function setDragPosition(e) {\r\n    const { scrollbar, rtlTranslate: rtl } = carousel;\r\n    const { $el } = scrollbar;\r\n\r\n    let positionRatio;\r\n    positionRatio =\r\n      (getPointerPosition(e) -\r\n        $el.offset()[carousel.isHorizontal() ? 'left' : 'top'] -\r\n        (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\r\n      (trackSize - dragSize);\r\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\r\n    if (rtl) {\r\n      positionRatio = 1 - positionRatio;\r\n    }\r\n\r\n    const position =\r\n      carousel.minTranslate() + (carousel.maxTranslate() - carousel.minTranslate()) * positionRatio;\r\n\r\n    carousel.updateProgress(position);\r\n    carousel.setTranslate(position);\r\n    carousel.updateActiveIndex();\r\n    carousel.updateSlidesClasses();\r\n  }\r\n  function onDragStart(e) {\r\n    const params = carousel.params.scrollbar;\r\n    const { scrollbar, $wrapperEl } = carousel;\r\n    const { $el, $dragEl } = scrollbar;\r\n    isTouched = true;\r\n    dragStartPos =\r\n      e.target === $dragEl[0] || e.target === $dragEl\r\n        ? getPointerPosition(e) -\r\n          e.target.getBoundingClientRect()[carousel.isHorizontal() ? 'left' : 'top']\r\n        : null;\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n\r\n    $wrapperEl.transition(100);\r\n    $dragEl.transition(100);\r\n    setDragPosition(e);\r\n\r\n    clearTimeout(dragTimeout);\r\n\r\n    $el.transition(0);\r\n    if (params.hide) {\r\n      $el.css('opacity', 1);\r\n    }\r\n    if (carousel.params.cssMode) {\r\n      carousel.$wrapperEl.css('scroll-snap-type', 'none');\r\n    }\r\n    emit('scrollbarDragStart', e);\r\n  }\r\n  function onDragMove(e) {\r\n    const { scrollbar, $wrapperEl } = carousel;\r\n    const { $el, $dragEl } = scrollbar;\r\n\r\n    if (!isTouched) return;\r\n    if (e.preventDefault) e.preventDefault();\r\n    else e.returnValue = false;\r\n    setDragPosition(e);\r\n    $wrapperEl.transition(0);\r\n    $el.transition(0);\r\n    $dragEl.transition(0);\r\n    emit('scrollbarDragMove', e);\r\n  }\r\n  function onDragEnd(e) {\r\n    const params = carousel.params.scrollbar;\r\n    const { scrollbar, $wrapperEl } = carousel;\r\n    const { $el } = scrollbar;\r\n\r\n    if (!isTouched) return;\r\n    isTouched = false;\r\n    if (carousel.params.cssMode) {\r\n      carousel.$wrapperEl.css('scroll-snap-type', '');\r\n      $wrapperEl.transition('');\r\n    }\r\n    if (params.hide) {\r\n      clearTimeout(dragTimeout);\r\n      dragTimeout = nextTick(() => {\r\n        $el.css('opacity', 0);\r\n        $el.transition(400);\r\n      }, 1000);\r\n    }\r\n    emit('scrollbarDragEnd', e);\r\n    if (params.snapOnRelease) {\r\n      carousel.slideToClosest();\r\n    }\r\n  }\r\n\r\n  function events(method) {\r\n    const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = carousel;\r\n    const $el = scrollbar.$el;\r\n    if (!$el) return;\r\n    const target = $el[0];\r\n    const activeListener =\r\n      support.passiveListener && params.passiveListeners\r\n        ? { passive: false, capture: false }\r\n        : false;\r\n    const passiveListener =\r\n      support.passiveListener && params.passiveListeners\r\n        ? { passive: true, capture: false }\r\n        : false;\r\n    if (!target) return;\r\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\r\n    if (!support.touch) {\r\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\r\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\r\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\r\n    } else {\r\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\r\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\r\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\r\n    }\r\n  }\r\n\r\n  function enableDraggable() {\r\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\r\n    events('on');\r\n  }\r\n  function disableDraggable() {\r\n    if (!carousel.params.scrollbar.el || !carousel.scrollbar.el) return;\r\n    events('off');\r\n  }\r\n  function init() {\r\n    const { scrollbar, $el: $carouselEl } = carousel;\r\n    carousel.params.scrollbar = createElementIfNotDefined(\r\n      carousel,\r\n      carousel.originalParams.scrollbar,\r\n      carousel.params.scrollbar,\r\n      { el: 'vts-carousel-scrollbar' }\r\n    );\r\n    const params = carousel.params.scrollbar;\r\n    if (!params.el) return;\r\n\r\n    let $el = $(params.el);\r\n    if (\r\n      carousel.params.uniqueNavElements &&\r\n      typeof params.el === 'string' &&\r\n      $el.length > 1 &&\r\n      $carouselEl.find(params.el).length === 1\r\n    ) {\r\n      $el = $carouselEl.find(params.el);\r\n    }\r\n\r\n    $el.addClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n\r\n    let $dragEl = $el.find(`.${carousel.params.scrollbar.dragClass}`);\r\n    if ($dragEl.length === 0) {\r\n      $dragEl = $(`<div class=\"${carousel.params.scrollbar.dragClass}\"></div>`);\r\n      $el.append($dragEl);\r\n    }\r\n\r\n    Object.assign(scrollbar, {\r\n      $el,\r\n      el: $el[0],\r\n      $dragEl,\r\n      dragEl: $dragEl[0]\r\n    });\r\n\r\n    if (params.draggable) {\r\n      enableDraggable();\r\n    }\r\n\r\n    if ($el) {\r\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.scrollbar.lockClass);\r\n    }\r\n  }\r\n  function destroy() {\r\n    const params = carousel.params.scrollbar;\r\n    const $el = carousel.scrollbar.$el;\r\n    if ($el) {\r\n      $el.removeClass(carousel.isHorizontal() ? params.horizontalClass : params.verticalClass);\r\n    }\r\n\r\n    disableDraggable();\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.scrollbar.enabled === false) {\r\n      // eslint-disable-next-line\r\n      disable();\r\n    } else {\r\n      init();\r\n      updateSize();\r\n      setTranslate();\r\n    }\r\n  });\r\n  on('update resize observerUpdate lock unlock', () => {\r\n    updateSize();\r\n  });\r\n  on('setTranslate', () => {\r\n    setTranslate();\r\n  });\r\n  on('setTransition', (_s, duration) => {\r\n    setTransition(duration);\r\n  });\r\n  on('enable disable', () => {\r\n    const { $el } = carousel.scrollbar;\r\n    if ($el) {\r\n      $el[carousel.enabled ? 'removeClass' : 'addClass'](carousel.params.scrollbar.lockClass);\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    destroy();\r\n  });\r\n\r\n  const enable = () => {\r\n    carousel.$el.removeClass(carousel.params.scrollbar.scrollbarDisabledClass);\r\n    if (carousel.scrollbar.$el) {\r\n      carousel.scrollbar.$el.removeClass(carousel.params.scrollbar.scrollbarDisabledClass);\r\n    }\r\n    init();\r\n    updateSize();\r\n    setTranslate();\r\n  };\r\n\r\n  const disable = () => {\r\n    carousel.$el.addClass(carousel.params.scrollbar.scrollbarDisabledClass);\r\n    if (carousel.scrollbar.$el) {\r\n      carousel.scrollbar.$el.addClass(carousel.params.scrollbar.scrollbarDisabledClass);\r\n    }\r\n    destroy();\r\n  };\r\n\r\n  Object.assign(carousel.scrollbar, {\r\n    enable,\r\n    disable,\r\n    updateSize,\r\n    setTranslate,\r\n    init,\r\n    destroy\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function Parallax({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    parallax: {\r\n      enabled: false\r\n    }\r\n  });\r\n\r\n  const setTransform = (el, progress) => {\r\n    const { rtl } = carousel;\r\n\r\n    const $el = $(el);\r\n    const rtlFactor = rtl ? -1 : 1;\r\n\r\n    const p = $el.attr('data-carousel-parallax') || '0';\r\n    let x = $el.attr('data-carousel-parallax-x');\r\n    let y = $el.attr('data-carousel-parallax-y');\r\n    const scale = $el.attr('data-carousel-parallax-scale');\r\n    const opacity = $el.attr('data-carousel-parallax-opacity');\r\n\r\n    if (x || y) {\r\n      x = x || '0';\r\n      y = y || '0';\r\n    } else if (carousel.isHorizontal()) {\r\n      x = p;\r\n      y = '0';\r\n    } else {\r\n      y = p;\r\n      x = '0';\r\n    }\r\n\r\n    if (x.indexOf('%') >= 0) {\r\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\r\n    } else {\r\n      x = `${x * progress * rtlFactor}px`;\r\n    }\r\n    if (y.indexOf('%') >= 0) {\r\n      y = `${parseInt(y, 10) * progress}%`;\r\n    } else {\r\n      y = `${y * progress}px`;\r\n    }\r\n\r\n    if (typeof opacity !== 'undefined' && opacity !== null) {\r\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\r\n      $el[0].style.opacity = currentOpacity;\r\n    }\r\n    if (typeof scale === 'undefined' || scale === null) {\r\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\r\n    } else {\r\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\r\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\r\n    }\r\n  };\r\n\r\n  const setTranslate = () => {\r\n    const { $el, slides, progress, snapGrid } = carousel;\r\n    $el\r\n      .children(\r\n        '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\r\n      )\r\n      .each(el => {\r\n        setTransform(el, progress);\r\n      });\r\n    slides.each((slideEl, slideIndex) => {\r\n      let slideProgress = slideEl.progress;\r\n      if (carousel.params.slidesPerGroup > 1 && carousel.params.slidesPerView !== 'auto') {\r\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\r\n      }\r\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\r\n      $(slideEl)\r\n        .find(\r\n          '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\r\n        )\r\n        .each(el => {\r\n          setTransform(el, slideProgress);\r\n        });\r\n    });\r\n  };\r\n\r\n  const setTransition = (duration = carousel.params.speed) => {\r\n    const { $el } = carousel;\r\n    $el\r\n      .find(\r\n        '[data-carousel-parallax], [data-carousel-parallax-x], [data-carousel-parallax-y], [data-carousel-parallax-opacity], [data-carousel-parallax-scale]'\r\n      )\r\n      .each(parallaxEl => {\r\n        const $parallaxEl = $(parallaxEl);\r\n        let parallaxDuration =\r\n          parseInt($parallaxEl.attr('data-carousel-parallax-duration'), 10) || duration;\r\n        if (duration === 0) parallaxDuration = 0;\r\n        $parallaxEl.transition(parallaxDuration);\r\n      });\r\n  };\r\n\r\n  on('beforeInit', () => {\r\n    if (!carousel.params.parallax.enabled) return;\r\n    carousel.params.watchSlidesProgress = true;\r\n    carousel.originalParams.watchSlidesProgress = true;\r\n  });\r\n  on('init', () => {\r\n    if (!carousel.params.parallax.enabled) return;\r\n    setTranslate();\r\n  });\r\n  on('setTranslate', () => {\r\n    if (!carousel.params.parallax.enabled) return;\r\n    setTranslate();\r\n  });\r\n  on('setTransition', (_carousel, duration) => {\r\n    if (!carousel.params.parallax.enabled) return;\r\n    setTransition(duration);\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\nimport { getTranslate } from '../../../shared/utils';\r\n\r\nexport default function Zoom({ carousel, extendParams, on, emit }) {\r\n  const window = getWindow();\r\n  extendParams({\r\n    zoom: {\r\n      enabled: false,\r\n      maxRatio: 3,\r\n      minRatio: 1,\r\n      toggle: true,\r\n      containerClass: 'vts-carousel-zoom-container',\r\n      zoomedSlideClass: 'vts-carousel-slide-zoomed'\r\n    }\r\n  });\r\n\r\n  carousel.zoom = {\r\n    enabled: false\r\n  };\r\n\r\n  let currentScale = 1;\r\n  let isScaling = false;\r\n  let gesturesEnabled;\r\n  let fakeGestureTouched;\r\n  let fakeGestureMoved;\r\n  const gesture = {\r\n    $slideEl: undefined,\r\n    slideWidth: undefined,\r\n    slideHeight: undefined,\r\n    $imageEl: undefined,\r\n    $imageWrapEl: undefined,\r\n    maxRatio: 3\r\n  };\r\n  const image = {\r\n    isTouched: undefined,\r\n    isMoved: undefined,\r\n    currentX: undefined,\r\n    currentY: undefined,\r\n    minX: undefined,\r\n    minY: undefined,\r\n    maxX: undefined,\r\n    maxY: undefined,\r\n    width: undefined,\r\n    height: undefined,\r\n    startX: undefined,\r\n    startY: undefined,\r\n    touchesStart: {},\r\n    touchesCurrent: {}\r\n  };\r\n  const velocity = {\r\n    x: undefined,\r\n    y: undefined,\r\n    prevPositionX: undefined,\r\n    prevPositionY: undefined,\r\n    prevTime: undefined\r\n  };\r\n\r\n  let scale = 1;\r\n  Object.defineProperty(carousel.zoom, 'scale', {\r\n    get() {\r\n      return scale;\r\n    },\r\n    set(value) {\r\n      if (scale !== value) {\r\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\r\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\r\n        emit('zoomChange', value, imageEl, slideEl);\r\n      }\r\n      scale = value;\r\n    }\r\n  });\r\n\r\n  function getDistanceBetweenTouches(e) {\r\n    if (e.targetTouches.length < 2) return 1;\r\n    const x1 = e.targetTouches[0].pageX;\r\n    const y1 = e.targetTouches[0].pageY;\r\n    const x2 = e.targetTouches[1].pageX;\r\n    const y2 = e.targetTouches[1].pageY;\r\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\r\n    return distance;\r\n  }\r\n\r\n  // Events\r\n  function onGestureStart(e) {\r\n    const support = carousel.support;\r\n    const params = carousel.params.zoom;\r\n    fakeGestureTouched = false;\r\n    fakeGestureMoved = false;\r\n    if (!support.gestures) {\r\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\r\n        return;\r\n      }\r\n      fakeGestureTouched = true;\r\n      gesture.scaleStart = getDistanceBetweenTouches(e);\r\n    }\r\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\r\n      gesture.$slideEl = $(e.target).closest(`.${carousel.params.slideClass}`);\r\n      if (gesture.$slideEl.length === 0)\r\n        gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\r\n      gesture.$imageEl = gesture.$slideEl\r\n        .find(`.${params.containerClass}`)\r\n        .eq(0)\r\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\r\n        .eq(0);\r\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\r\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\r\n      if (gesture.$imageWrapEl.length === 0) {\r\n        gesture.$imageEl = undefined;\r\n        return;\r\n      }\r\n    }\r\n    if (gesture.$imageEl) {\r\n      gesture.$imageEl.transition(0);\r\n    }\r\n    isScaling = true;\r\n  }\r\n  function onGestureChange(e) {\r\n    const support = carousel.support;\r\n    const params = carousel.params.zoom;\r\n    const zoom = carousel.zoom;\r\n    if (!support.gestures) {\r\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\r\n        return;\r\n      }\r\n      fakeGestureMoved = true;\r\n      gesture.scaleMove = getDistanceBetweenTouches(e);\r\n    }\r\n\r\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\r\n      if (e.type === 'gesturechange') onGestureStart(e);\r\n      return;\r\n    }\r\n    if (support.gestures) {\r\n      zoom.scale = e.scale * currentScale;\r\n    } else {\r\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\r\n    }\r\n    if (zoom.scale > gesture.maxRatio) {\r\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\r\n    }\r\n    if (zoom.scale < params.minRatio) {\r\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\r\n    }\r\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\r\n  }\r\n  function onGestureEnd(e) {\r\n    const device = carousel.device;\r\n    const support = carousel.support;\r\n    const params = carousel.params.zoom;\r\n    const zoom = carousel.zoom;\r\n    if (!support.gestures) {\r\n      if (!fakeGestureTouched || !fakeGestureMoved) {\r\n        return;\r\n      }\r\n      if (\r\n        e.type !== 'touchend' ||\r\n        (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\r\n      ) {\r\n        return;\r\n      }\r\n      fakeGestureTouched = false;\r\n      fakeGestureMoved = false;\r\n    }\r\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\r\n    gesture.$imageEl\r\n      .transition(carousel.params.speed)\r\n      .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\r\n    currentScale = zoom.scale;\r\n    isScaling = false;\r\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\r\n  }\r\n  function onTouchStart(e) {\r\n    const device = carousel.device;\r\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n    if (image.isTouched) return;\r\n    if (device.android && e.cancelable) e.preventDefault();\r\n    image.isTouched = true;\r\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\r\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\r\n  }\r\n  function onTouchMove(e) {\r\n    const zoom = carousel.zoom;\r\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n    carousel.allowClick = false;\r\n    if (!image.isTouched || !gesture.$slideEl) return;\r\n\r\n    if (!image.isMoved) {\r\n      image.width = gesture.$imageEl[0].offsetWidth;\r\n      image.height = gesture.$imageEl[0].offsetHeight;\r\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\r\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\r\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\r\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\r\n      gesture.$imageWrapEl.transition(0);\r\n    }\r\n    // Define if we need image drag\r\n    const scaledWidth = image.width * zoom.scale;\r\n    const scaledHeight = image.height * zoom.scale;\r\n\r\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\r\n\r\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n    image.maxX = -image.minX;\r\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n    image.maxY = -image.minY;\r\n\r\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\r\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\r\n\r\n    if (!image.isMoved && !isScaling) {\r\n      if (\r\n        carousel.isHorizontal() &&\r\n        ((Math.floor(image.minX) === Math.floor(image.startX) &&\r\n          image.touchesCurrent.x < image.touchesStart.x) ||\r\n          (Math.floor(image.maxX) === Math.floor(image.startX) &&\r\n            image.touchesCurrent.x > image.touchesStart.x))\r\n      ) {\r\n        image.isTouched = false;\r\n        return;\r\n      }\r\n      if (\r\n        !carousel.isHorizontal() &&\r\n        ((Math.floor(image.minY) === Math.floor(image.startY) &&\r\n          image.touchesCurrent.y < image.touchesStart.y) ||\r\n          (Math.floor(image.maxY) === Math.floor(image.startY) &&\r\n            image.touchesCurrent.y > image.touchesStart.y))\r\n      ) {\r\n        image.isTouched = false;\r\n        return;\r\n      }\r\n    }\r\n    if (e.cancelable) {\r\n      e.preventDefault();\r\n    }\r\n    e.stopPropagation();\r\n\r\n    image.isMoved = true;\r\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\r\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\r\n\r\n    if (image.currentX < image.minX) {\r\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\r\n    }\r\n    if (image.currentX > image.maxX) {\r\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\r\n    }\r\n\r\n    if (image.currentY < image.minY) {\r\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\r\n    }\r\n    if (image.currentY > image.maxY) {\r\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\r\n    }\r\n\r\n    // Velocity\r\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\r\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\r\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\r\n    velocity.x =\r\n      (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\r\n    velocity.y =\r\n      (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\r\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\r\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\r\n    velocity.prevPositionX = image.touchesCurrent.x;\r\n    velocity.prevPositionY = image.touchesCurrent.y;\r\n    velocity.prevTime = Date.now();\r\n\r\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\r\n  }\r\n  function onTouchEnd() {\r\n    const zoom = carousel.zoom;\r\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n    if (!image.isTouched || !image.isMoved) {\r\n      image.isTouched = false;\r\n      image.isMoved = false;\r\n      return;\r\n    }\r\n    image.isTouched = false;\r\n    image.isMoved = false;\r\n    let momentumDurationX = 300;\r\n    let momentumDurationY = 300;\r\n    const momentumDistanceX = velocity.x * momentumDurationX;\r\n    const newPositionX = image.currentX + momentumDistanceX;\r\n    const momentumDistanceY = velocity.y * momentumDurationY;\r\n    const newPositionY = image.currentY + momentumDistanceY;\r\n\r\n    // Fix duration\r\n    if (velocity.x !== 0)\r\n      momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\r\n    if (velocity.y !== 0)\r\n      momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\r\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\r\n\r\n    image.currentX = newPositionX;\r\n    image.currentY = newPositionY;\r\n\r\n    // Define if we need image drag\r\n    const scaledWidth = image.width * zoom.scale;\r\n    const scaledHeight = image.height * zoom.scale;\r\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n    image.maxX = -image.minX;\r\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n    image.maxY = -image.minY;\r\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\r\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\r\n\r\n    gesture.$imageWrapEl\r\n      .transition(momentumDuration)\r\n      .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\r\n  }\r\n  function onTransitionEnd() {\r\n    const zoom = carousel.zoom;\r\n    if (gesture.$slideEl && carousel.previousIndex !== carousel.activeIndex) {\r\n      if (gesture.$imageEl) {\r\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\r\n      }\r\n      if (gesture.$imageWrapEl) {\r\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\r\n      }\r\n\r\n      zoom.scale = 1;\r\n      currentScale = 1;\r\n\r\n      gesture.$slideEl = undefined;\r\n      gesture.$imageEl = undefined;\r\n      gesture.$imageWrapEl = undefined;\r\n    }\r\n  }\r\n\r\n  function zoomIn(e) {\r\n    const zoom = carousel.zoom;\r\n    const params = carousel.params.zoom;\r\n\r\n    if (!gesture.$slideEl) {\r\n      if (e && e.target) {\r\n        gesture.$slideEl = $(e.target).closest(`.${carousel.params.slideClass}`);\r\n      }\r\n      if (!gesture.$slideEl) {\r\n        if (carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual) {\r\n          gesture.$slideEl = carousel.$wrapperEl.children(`.${carousel.params.slideActiveClass}`);\r\n        } else {\r\n          gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\r\n        }\r\n      }\r\n\r\n      gesture.$imageEl = gesture.$slideEl\r\n        .find(`.${params.containerClass}`)\r\n        .eq(0)\r\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\r\n        .eq(0);\r\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\r\n    }\r\n    if (\r\n      !gesture.$imageEl ||\r\n      gesture.$imageEl.length === 0 ||\r\n      !gesture.$imageWrapEl ||\r\n      gesture.$imageWrapEl.length === 0\r\n    )\r\n      return;\r\n    if (carousel.params.cssMode) {\r\n      carousel.wrapperEl.style.overflow = 'hidden';\r\n      carousel.wrapperEl.style.touchAction = 'none';\r\n    }\r\n\r\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\r\n\r\n    let touchX;\r\n    let touchY;\r\n    let offsetX;\r\n    let offsetY;\r\n    let diffX;\r\n    let diffY;\r\n    let translateX;\r\n    let translateY;\r\n    let imageWidth;\r\n    let imageHeight;\r\n    let scaledWidth;\r\n    let scaledHeight;\r\n    let translateMinX;\r\n    let translateMinY;\r\n    let translateMaxX;\r\n    let translateMaxY;\r\n    let slideWidth;\r\n    let slideHeight;\r\n\r\n    if (typeof image.touchesStart.x === 'undefined' && e) {\r\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\r\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\r\n    } else {\r\n      touchX = image.touchesStart.x;\r\n      touchY = image.touchesStart.y;\r\n    }\r\n\r\n    zoom.scale = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\r\n    currentScale = gesture.$imageWrapEl.attr('data-carousel-zoom') || params.maxRatio;\r\n    if (e) {\r\n      slideWidth = gesture.$slideEl[0].offsetWidth;\r\n      slideHeight = gesture.$slideEl[0].offsetHeight;\r\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\r\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\r\n      diffX = offsetX + slideWidth / 2 - touchX;\r\n      diffY = offsetY + slideHeight / 2 - touchY;\r\n\r\n      imageWidth = gesture.$imageEl[0].offsetWidth;\r\n      imageHeight = gesture.$imageEl[0].offsetHeight;\r\n      scaledWidth = imageWidth * zoom.scale;\r\n      scaledHeight = imageHeight * zoom.scale;\r\n\r\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\r\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\r\n      translateMaxX = -translateMinX;\r\n      translateMaxY = -translateMinY;\r\n\r\n      translateX = diffX * zoom.scale;\r\n      translateY = diffY * zoom.scale;\r\n\r\n      if (translateX < translateMinX) {\r\n        translateX = translateMinX;\r\n      }\r\n      if (translateX > translateMaxX) {\r\n        translateX = translateMaxX;\r\n      }\r\n\r\n      if (translateY < translateMinY) {\r\n        translateY = translateMinY;\r\n      }\r\n      if (translateY > translateMaxY) {\r\n        translateY = translateMaxY;\r\n      }\r\n    } else {\r\n      translateX = 0;\r\n      translateY = 0;\r\n    }\r\n    gesture.$imageWrapEl\r\n      .transition(300)\r\n      .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\r\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\r\n  }\r\n  function zoomOut() {\r\n    const zoom = carousel.zoom;\r\n    const params = carousel.params.zoom;\r\n\r\n    if (!gesture.$slideEl) {\r\n      if (carousel.params.virtual && carousel.params.virtual.enabled && carousel.virtual) {\r\n        gesture.$slideEl = carousel.$wrapperEl.children(`.${carousel.params.slideActiveClass}`);\r\n      } else {\r\n        gesture.$slideEl = carousel.slides.eq(carousel.activeIndex);\r\n      }\r\n      gesture.$imageEl = gesture.$slideEl\r\n        .find(`.${params.containerClass}`)\r\n        .eq(0)\r\n        .find('picture, img, svg, canvas, .carousel-zoom-target')\r\n        .eq(0);\r\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\r\n    }\r\n    if (\r\n      !gesture.$imageEl ||\r\n      gesture.$imageEl.length === 0 ||\r\n      !gesture.$imageWrapEl ||\r\n      gesture.$imageWrapEl.length === 0\r\n    )\r\n      return;\r\n    if (carousel.params.cssMode) {\r\n      carousel.wrapperEl.style.overflow = '';\r\n      carousel.wrapperEl.style.touchAction = '';\r\n    }\r\n    zoom.scale = 1;\r\n    currentScale = 1;\r\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\r\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\r\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\r\n    gesture.$slideEl = undefined;\r\n  }\r\n\r\n  // Toggle Zoom\r\n  function zoomToggle(e) {\r\n    const zoom = carousel.zoom;\r\n\r\n    if (zoom.scale && zoom.scale !== 1) {\r\n      // Zoom Out\r\n      zoomOut();\r\n    } else {\r\n      // Zoom In\r\n      zoomIn(e);\r\n    }\r\n  }\r\n\r\n  function getListeners() {\r\n    const support = carousel.support;\r\n    const passiveListener =\r\n      carousel.touchEvents.start === 'touchstart' &&\r\n      support.passiveListener &&\r\n      carousel.params.passiveListeners\r\n        ? { passive: true, capture: false }\r\n        : false;\r\n    const activeListenerWithCapture = support.passiveListener\r\n      ? { passive: false, capture: true }\r\n      : true;\r\n    return { passiveListener, activeListenerWithCapture };\r\n  }\r\n\r\n  function getSlideSelector() {\r\n    return `.${carousel.params.slideClass}`;\r\n  }\r\n\r\n  function toggleGestures(method) {\r\n    const { passiveListener } = getListeners();\r\n    const slideSelector = getSlideSelector();\r\n    carousel.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\r\n    carousel.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\r\n    carousel.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\r\n  }\r\n  function enableGestures() {\r\n    if (gesturesEnabled) return;\r\n    gesturesEnabled = true;\r\n    toggleGestures('on');\r\n  }\r\n  function disableGestures() {\r\n    if (!gesturesEnabled) return;\r\n    gesturesEnabled = false;\r\n    toggleGestures('off');\r\n  }\r\n\r\n  // Attach/Detach Events\r\n  function enable() {\r\n    const zoom = carousel.zoom;\r\n    if (zoom.enabled) return;\r\n    zoom.enabled = true;\r\n    const support = carousel.support;\r\n    const { passiveListener, activeListenerWithCapture } = getListeners();\r\n    const slideSelector = getSlideSelector();\r\n\r\n    // Scale image\r\n    if (support.gestures) {\r\n      carousel.$wrapperEl.on(carousel.touchEvents.start, enableGestures, passiveListener);\r\n      carousel.$wrapperEl.on(carousel.touchEvents.end, disableGestures, passiveListener);\r\n    } else if (carousel.touchEvents.start === 'touchstart') {\r\n      carousel.$wrapperEl.on(\r\n        carousel.touchEvents.start,\r\n        slideSelector,\r\n        onGestureStart,\r\n        passiveListener\r\n      );\r\n      carousel.$wrapperEl.on(\r\n        carousel.touchEvents.move,\r\n        slideSelector,\r\n        onGestureChange,\r\n        activeListenerWithCapture\r\n      );\r\n      carousel.$wrapperEl.on(\r\n        carousel.touchEvents.end,\r\n        slideSelector,\r\n        onGestureEnd,\r\n        passiveListener\r\n      );\r\n      if (carousel.touchEvents.cancel) {\r\n        carousel.$wrapperEl.on(\r\n          carousel.touchEvents.cancel,\r\n          slideSelector,\r\n          onGestureEnd,\r\n          passiveListener\r\n        );\r\n      }\r\n    }\r\n\r\n    // Move image\r\n    carousel.$wrapperEl.on(\r\n      carousel.touchEvents.move,\r\n      `.${carousel.params.zoom.containerClass}`,\r\n      onTouchMove,\r\n      activeListenerWithCapture\r\n    );\r\n  }\r\n  function disable() {\r\n    const zoom = carousel.zoom;\r\n    if (!zoom.enabled) return;\r\n    const support = carousel.support;\r\n    zoom.enabled = false;\r\n\r\n    const { passiveListener, activeListenerWithCapture } = getListeners();\r\n    const slideSelector = getSlideSelector();\r\n\r\n    // Scale image\r\n    if (support.gestures) {\r\n      carousel.$wrapperEl.off(carousel.touchEvents.start, enableGestures, passiveListener);\r\n      carousel.$wrapperEl.off(carousel.touchEvents.end, disableGestures, passiveListener);\r\n    } else if (carousel.touchEvents.start === 'touchstart') {\r\n      carousel.$wrapperEl.off(\r\n        carousel.touchEvents.start,\r\n        slideSelector,\r\n        onGestureStart,\r\n        passiveListener\r\n      );\r\n      carousel.$wrapperEl.off(\r\n        carousel.touchEvents.move,\r\n        slideSelector,\r\n        onGestureChange,\r\n        activeListenerWithCapture\r\n      );\r\n      carousel.$wrapperEl.off(\r\n        carousel.touchEvents.end,\r\n        slideSelector,\r\n        onGestureEnd,\r\n        passiveListener\r\n      );\r\n      if (carousel.touchEvents.cancel) {\r\n        carousel.$wrapperEl.off(\r\n          carousel.touchEvents.cancel,\r\n          slideSelector,\r\n          onGestureEnd,\r\n          passiveListener\r\n        );\r\n      }\r\n    }\r\n\r\n    // Move image\r\n    carousel.$wrapperEl.off(\r\n      carousel.touchEvents.move,\r\n      `.${carousel.params.zoom.containerClass}`,\r\n      onTouchMove,\r\n      activeListenerWithCapture\r\n    );\r\n  }\r\n\r\n  on('init', () => {\r\n    if (carousel.params.zoom.enabled) {\r\n      enable();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    disable();\r\n  });\r\n  on('touchStart', (_s, e) => {\r\n    if (!carousel.zoom.enabled) return;\r\n    onTouchStart(e);\r\n  });\r\n  on('touchEnd', (_s, e) => {\r\n    if (!carousel.zoom.enabled) return;\r\n    onTouchEnd(e);\r\n  });\r\n  on('doubleTap', (_s, e) => {\r\n    if (\r\n      !carousel.animating &&\r\n      carousel.params.zoom.enabled &&\r\n      carousel.zoom.enabled &&\r\n      carousel.params.zoom.toggle\r\n    ) {\r\n      zoomToggle(e);\r\n    }\r\n  });\r\n  on('transitionEnd', () => {\r\n    if (carousel.zoom.enabled && carousel.params.zoom.enabled) {\r\n      onTransitionEnd();\r\n    }\r\n  });\r\n  on('slideChange', () => {\r\n    if (carousel.zoom.enabled && carousel.params.zoom.enabled && carousel.params.cssMode) {\r\n      onTransitionEnd();\r\n    }\r\n  });\r\n\r\n  Object.assign(carousel.zoom, {\r\n    enable,\r\n    disable,\r\n    in: zoomIn,\r\n    out: zoomOut,\r\n    toggle: zoomToggle\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function Lazy({ carousel, extendParams, on, emit }) {\r\n  extendParams({\r\n    lazy: {\r\n      checkInView: false,\r\n      enabled: false,\r\n      loadPrevNext: false,\r\n      loadPrevNextAmount: 1,\r\n      loadOnTransitionStart: false,\r\n      scrollingElement: '',\r\n\r\n      elementClass: 'vts-carousel-lazy',\r\n      loadingClass: 'vts-carousel-lazy-loading',\r\n      loadedClass: 'vts-carousel-lazy-loaded',\r\n      preloaderClass: 'vts-carousel-lazy-preloader'\r\n    }\r\n  });\r\n\r\n  carousel.lazy = {};\r\n\r\n  let scrollHandlerAttached = false;\r\n  let initialImageLoaded = false;\r\n\r\n  function loadInSlide(index, loadInDuplicate = true) {\r\n    const params = carousel.params.lazy;\r\n    if (typeof index === 'undefined') return;\r\n    if (carousel.slides.length === 0) return;\r\n    const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\r\n\r\n    const $slideEl = isVirtual\r\n      ? carousel.$wrapperEl.children(\r\n          `.${carousel.params.slideClass}[data-carousel-slide-index=\"${index}\"]`\r\n        )\r\n      : carousel.slides.eq(index);\r\n\r\n    const $images = $slideEl.find(\r\n      `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`\r\n    );\r\n    if (\r\n      $slideEl.hasClass(params.elementClass) &&\r\n      !$slideEl.hasClass(params.loadedClass) &&\r\n      !$slideEl.hasClass(params.loadingClass)\r\n    ) {\r\n      $images.push($slideEl[0]);\r\n    }\r\n    if ($images.length === 0) return;\r\n\r\n    $images.each(imageEl => {\r\n      const $imageEl = $(imageEl);\r\n      $imageEl.addClass(params.loadingClass);\r\n\r\n      const background = $imageEl.attr('data-background');\r\n      const src = $imageEl.attr('data-src');\r\n      const srcset = $imageEl.attr('data-srcset');\r\n      const sizes = $imageEl.attr('data-sizes');\r\n      const $pictureEl = $imageEl.parent('picture');\r\n\r\n      carousel.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\r\n        if (\r\n          typeof carousel === 'undefined' ||\r\n          carousel === null ||\r\n          !carousel ||\r\n          (carousel && !carousel.params) ||\r\n          carousel.destroyed\r\n        )\r\n          return;\r\n        if (background) {\r\n          $imageEl.css('background-image', `url(\"${background}\")`);\r\n          $imageEl.removeAttr('data-background');\r\n        } else {\r\n          if (srcset) {\r\n            $imageEl.attr('srcset', srcset);\r\n            $imageEl.removeAttr('data-srcset');\r\n          }\r\n          if (sizes) {\r\n            $imageEl.attr('sizes', sizes);\r\n            $imageEl.removeAttr('data-sizes');\r\n          }\r\n          if ($pictureEl.length) {\r\n            $pictureEl.children('source').each(sourceEl => {\r\n              const $source = $(sourceEl);\r\n\r\n              if ($source.attr('data-srcset')) {\r\n                $source.attr('srcset', $source.attr('data-srcset'));\r\n                $source.removeAttr('data-srcset');\r\n              }\r\n            });\r\n          }\r\n          if (src) {\r\n            $imageEl.attr('src', src);\r\n            $imageEl.removeAttr('data-src');\r\n          }\r\n        }\r\n\r\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\r\n        $slideEl.find(`.${params.preloaderClass}`).remove();\r\n        if (carousel.params.loop && loadInDuplicate) {\r\n          const slideOriginalIndex = $slideEl.attr('data-carousel-slide-index');\r\n          if ($slideEl.hasClass(carousel.params.slideDuplicateClass)) {\r\n            const originalSlide = carousel.$wrapperEl.children(\r\n              `[data-carousel-slide-index=\"${slideOriginalIndex}\"]:not(.${carousel.params.slideDuplicateClass})`\r\n            );\r\n            loadInSlide(originalSlide.index(), false);\r\n          } else {\r\n            const duplicatedSlide = carousel.$wrapperEl.children(\r\n              `.${carousel.params.slideDuplicateClass}[data-carousel-slide-index=\"${slideOriginalIndex}\"]`\r\n            );\r\n            loadInSlide(duplicatedSlide.index(), false);\r\n          }\r\n        }\r\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\r\n        if (carousel.params.autoHeight) {\r\n          carousel.updateAutoHeight();\r\n        }\r\n      });\r\n\r\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\r\n    });\r\n  }\r\n\r\n  function load() {\r\n    const { $wrapperEl, params: carouselParams, slides, activeIndex } = carousel;\r\n    const isVirtual = carousel.virtual && carouselParams.virtual.enabled;\r\n    const params = carouselParams.lazy;\r\n\r\n    let slidesPerView = carouselParams.slidesPerView;\r\n    if (slidesPerView === 'auto') {\r\n      slidesPerView = 0;\r\n    }\r\n\r\n    function slideExist(index) {\r\n      if (isVirtual) {\r\n        if (\r\n          $wrapperEl.children(`.${carouselParams.slideClass}[data-carousel-slide-index=\"${index}\"]`)\r\n            .length\r\n        ) {\r\n          return true;\r\n        }\r\n      } else if (slides[index]) return true;\r\n      return false;\r\n    }\r\n\r\n    function slideIndex(slideEl) {\r\n      if (isVirtual) {\r\n        return $(slideEl).attr('data-carousel-slide-index');\r\n      }\r\n      return $(slideEl).index();\r\n    }\r\n\r\n    if (!initialImageLoaded) initialImageLoaded = true;\r\n    if (carousel.params.watchSlidesProgress) {\r\n      $wrapperEl.children(`.${carouselParams.slideVisibleClass}`).each(slideEl => {\r\n        const index = isVirtual ? $(slideEl).attr('data-carousel-slide-index') : $(slideEl).index();\r\n        loadInSlide(index);\r\n      });\r\n    } else if (slidesPerView > 1) {\r\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\r\n        if (slideExist(i)) loadInSlide(i);\r\n      }\r\n    } else {\r\n      loadInSlide(activeIndex);\r\n    }\r\n    if (params.loadPrevNext) {\r\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\r\n        const amount = params.loadPrevNextAmount;\r\n        const spv = Math.ceil(slidesPerView);\r\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\r\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\r\n        // Next Slides\r\n        for (let i = activeIndex + spv; i < maxIndex; i += 1) {\r\n          if (slideExist(i)) loadInSlide(i);\r\n        }\r\n        // Prev Slides\r\n        for (let i = minIndex; i < activeIndex; i += 1) {\r\n          if (slideExist(i)) loadInSlide(i);\r\n        }\r\n      } else {\r\n        const nextSlide = $wrapperEl.children(`.${carouselParams.slideNextClass}`);\r\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\r\n\r\n        const prevSlide = $wrapperEl.children(`.${carouselParams.slidePrevClass}`);\r\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\r\n      }\r\n    }\r\n  }\r\n  function checkInViewOnLoad() {\r\n    const window = getWindow();\r\n    if (!carousel || carousel.destroyed) return;\r\n    const $scrollElement = carousel.params.lazy.scrollingElement\r\n      ? $(carousel.params.lazy.scrollingElement)\r\n      : $(window);\r\n    const isWindow = $scrollElement[0] === window;\r\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\r\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\r\n    const carouselOffset = carousel.$el.offset();\r\n    const { rtlTranslate: rtl } = carousel;\r\n\r\n    let inView = false;\r\n\r\n    if (rtl) carouselOffset.left -= carousel.$el[0].scrollLeft;\r\n    const carouselCoord = [\r\n      [carouselOffset.left, carouselOffset.top],\r\n      [carouselOffset.left + carousel.width, carouselOffset.top],\r\n      [carouselOffset.left, carouselOffset.top + carousel.height],\r\n      [carouselOffset.left + carousel.width, carouselOffset.top + carousel.height]\r\n    ];\r\n    for (let i = 0; i < carouselCoord.length; i += 1) {\r\n      const point = carouselCoord[i];\r\n      if (\r\n        point[0] >= 0 &&\r\n        point[0] <= scrollElementWidth &&\r\n        point[1] >= 0 &&\r\n        point[1] <= scrollElementHeight\r\n      ) {\r\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\r\n        inView = true;\r\n      }\r\n    }\r\n\r\n    const passiveListener =\r\n      carousel.touchEvents.start === 'touchstart' &&\r\n      carousel.support.passiveListener &&\r\n      carousel.params.passiveListeners\r\n        ? { passive: true, capture: false }\r\n        : false;\r\n\r\n    if (inView) {\r\n      load();\r\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\r\n    } else if (!scrollHandlerAttached) {\r\n      scrollHandlerAttached = true;\r\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\r\n    }\r\n  }\r\n\r\n  on('beforeInit', () => {\r\n    if (carousel.params.lazy.enabled && carousel.params.preloadImages) {\r\n      carousel.params.preloadImages = false;\r\n    }\r\n  });\r\n  on('init', () => {\r\n    if (carousel.params.lazy.enabled) {\r\n      if (carousel.params.lazy.checkInView) {\r\n        checkInViewOnLoad();\r\n      } else {\r\n        load();\r\n      }\r\n    }\r\n  });\r\n  on('scroll', () => {\r\n    if (\r\n      carousel.params.freeMode &&\r\n      carousel.params.freeMode.enabled &&\r\n      !carousel.params.freeMode.sticky\r\n    ) {\r\n      load();\r\n    }\r\n  });\r\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\r\n    if (carousel.params.lazy.enabled) {\r\n      if (carousel.params.lazy.checkInView) {\r\n        checkInViewOnLoad();\r\n      } else {\r\n        load();\r\n      }\r\n    }\r\n  });\r\n  on('transitionStart', () => {\r\n    if (carousel.params.lazy.enabled) {\r\n      if (\r\n        carousel.params.lazy.loadOnTransitionStart ||\r\n        (!carousel.params.lazy.loadOnTransitionStart && !initialImageLoaded)\r\n      ) {\r\n        if (carousel.params.lazy.checkInView) {\r\n          checkInViewOnLoad();\r\n        } else {\r\n          load();\r\n        }\r\n      }\r\n    }\r\n  });\r\n  on('transitionEnd', () => {\r\n    if (carousel.params.lazy.enabled && !carousel.params.lazy.loadOnTransitionStart) {\r\n      if (carousel.params.lazy.checkInView) {\r\n        checkInViewOnLoad();\r\n      } else {\r\n        load();\r\n      }\r\n    }\r\n  });\r\n  on('slideChange', () => {\r\n    const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\r\n      carousel.params;\r\n    if (\r\n      lazy.enabled &&\r\n      (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\r\n    ) {\r\n      load();\r\n    }\r\n  });\r\n\r\n  on('destroy', () => {\r\n    if (!carousel.$el) return;\r\n    carousel.$el\r\n      .find(`.${carousel.params.lazy.loadingClass}`)\r\n      .removeClass(carousel.params.lazy.loadingClass);\r\n  });\r\n\r\n  Object.assign(carousel.lazy, {\r\n    load,\r\n    loadInSlide\r\n  });\r\n}\r\n","//@ts-nocheck\r\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\r\nimport { nextTick } from '../../../shared/utils';\r\n\r\nexport default function Controller({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    controller: {\r\n      control: undefined,\r\n      inverse: false,\r\n      by: 'slide' // or 'container'\r\n    }\r\n  });\r\n\r\n  carousel.controller = {\r\n    control: undefined\r\n  };\r\n\r\n  function LinearSpline(x, y) {\r\n    const binarySearch = (function search() {\r\n      let maxIndex;\r\n      let minIndex;\r\n      let guess;\r\n      return (array, val) => {\r\n        minIndex = -1;\r\n        maxIndex = array.length;\r\n        while (maxIndex - minIndex > 1) {\r\n          guess = (maxIndex + minIndex) >> 1;\r\n          if (array[guess] <= val) {\r\n            minIndex = guess;\r\n          } else {\r\n            maxIndex = guess;\r\n          }\r\n        }\r\n        return maxIndex;\r\n      };\r\n    })();\r\n    this.x = x;\r\n    this.y = y;\r\n    this.lastIndex = x.length - 1;\r\n    // Given an x value (x2), return the expected y2 value:\r\n    // (x1,y1) is the known point before given value,\r\n    // (x3,y3) is the known point after given value.\r\n    let i1;\r\n    let i3;\r\n\r\n    this.interpolate = function interpolate(x2) {\r\n      if (!x2) return 0;\r\n\r\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\r\n      i3 = binarySearch(this.x, x2);\r\n      i1 = i3 - 1;\r\n\r\n      // We have our indexes i1 & i3, so we can calculate already:\r\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\r\n      return (\r\n        ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\r\n      );\r\n    };\r\n    return this;\r\n  }\r\n  // xxx: for now i will just save one spline function to to\r\n  function getInterpolateFunction(c) {\r\n    if (!carousel.controller.spline) {\r\n      carousel.controller.spline = carousel.params.loop\r\n        ? new LinearSpline(carousel.slidesGrid, c.slidesGrid)\r\n        : new LinearSpline(carousel.snapGrid, c.snapGrid);\r\n    }\r\n  }\r\n  function setTranslate(_t, byController) {\r\n    const controlled = carousel.controller.control;\r\n    let multiplier;\r\n    let controlledTranslate;\r\n    const carousel = carousel.constructor;\r\n    function setControlledTranslate(c) {\r\n      // this will create an Interpolate function based on the snapGrids\r\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\r\n      // it makes sense to create this only once and recall it for the interpolation\r\n      // the function does a lot of value caching for performance\r\n      const translate = carousel.rtlTranslate ? -carousel.translate : carousel.translate;\r\n      if (carousel.params.controller.by === 'slide') {\r\n        getInterpolateFunction(c);\r\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\r\n        // but it did not work out\r\n        controlledTranslate = -carousel.controller.spline.interpolate(-translate);\r\n      }\r\n\r\n      if (!controlledTranslate || carousel.params.controller.by === 'container') {\r\n        multiplier =\r\n          (c.maxTranslate() - c.minTranslate()) /\r\n          (carousel.maxTranslate() - carousel.minTranslate());\r\n        controlledTranslate = (translate - carousel.minTranslate()) * multiplier + c.minTranslate();\r\n      }\r\n\r\n      if (carousel.params.controller.inverse) {\r\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\r\n      }\r\n      c.updateProgress(controlledTranslate);\r\n      c.setTranslate(controlledTranslate, carousel);\r\n      c.updateActiveIndex();\r\n      c.updateSlidesClasses();\r\n    }\r\n    if (Array.isArray(controlled)) {\r\n      for (let i = 0; i < controlled.length; i += 1) {\r\n        if (controlled[i] !== byController && controlled[i] instanceof carousel) {\r\n          setControlledTranslate(controlled[i]);\r\n        }\r\n      }\r\n    } else if (controlled instanceof carousel && byController !== controlled) {\r\n      setControlledTranslate(controlled);\r\n    }\r\n  }\r\n  function setTransition(duration, byController) {\r\n    const carousel = carousel.constructor;\r\n    const controlled = carousel.controller.control;\r\n    let i;\r\n    function setControlledTransition(c) {\r\n      c.setTransition(duration, carousel);\r\n      if (duration !== 0) {\r\n        c.transitionStart();\r\n        if (c.params.autoHeight) {\r\n          nextTick(() => {\r\n            c.updateAutoHeight();\r\n          });\r\n        }\r\n        c.$wrapperEl.transitionEnd(() => {\r\n          if (!controlled) return;\r\n          if (c.params.loop && carousel.params.controller.by === 'slide') {\r\n            c.loopFix();\r\n          }\r\n          c.transitionEnd();\r\n        });\r\n      }\r\n    }\r\n    if (Array.isArray(controlled)) {\r\n      for (i = 0; i < controlled.length; i += 1) {\r\n        if (controlled[i] !== byController && controlled[i] instanceof carousel) {\r\n          setControlledTransition(controlled[i]);\r\n        }\r\n      }\r\n    } else if (controlled instanceof carousel && byController !== controlled) {\r\n      setControlledTransition(controlled);\r\n    }\r\n  }\r\n\r\n  function removeSpline() {\r\n    if (!carousel.controller.control) return;\r\n    if (carousel.controller.spline) {\r\n      carousel.controller.spline = undefined;\r\n      delete carousel.controller.spline;\r\n    }\r\n  }\r\n  on('beforeInit', () => {\r\n    carousel.controller.control = carousel.params.controller.control;\r\n  });\r\n  on('update', () => {\r\n    removeSpline();\r\n  });\r\n  on('resize', () => {\r\n    removeSpline();\r\n  });\r\n  on('observerUpdate', () => {\r\n    removeSpline();\r\n  });\r\n  on('setTranslate', (_s, translate, byController) => {\r\n    if (!carousel.controller.control) return;\r\n    carousel.controller.setTranslate(translate, byController);\r\n  });\r\n  on('setTransition', (_s, duration, byController) => {\r\n    if (!carousel.controller.control) return;\r\n    carousel.controller.setTransition(duration, byController);\r\n  });\r\n\r\n  Object.assign(carousel.controller, {\r\n    setTranslate,\r\n    setTransition\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport classesToSelector from '../../../shared/classes-to-selector';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function A11y({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    a11y: {\r\n      enabled: true,\r\n      notificationClass: 'vts-carousel-notification',\r\n      prevSlideMessage: 'Previous slide',\r\n      nextSlideMessage: 'Next slide',\r\n      firstSlideMessage: 'This is the first slide',\r\n      lastSlideMessage: 'This is the last slide',\r\n      paginationBulletMessage: 'Go to slide {{index}}',\r\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\r\n      containerMessage: null,\r\n      containerRoleDescriptionMessage: null,\r\n      itemRoleDescriptionMessage: null,\r\n      slideRole: 'group',\r\n      id: null\r\n    }\r\n  });\r\n\r\n  carousel.a11y = {\r\n    clicked: false\r\n  };\r\n\r\n  let liveRegion = null;\r\n\r\n  function notify(message) {\r\n    const notification = liveRegion;\r\n    if (notification.length === 0) return;\r\n    notification.html('');\r\n    notification.html(message);\r\n  }\r\n\r\n  function getRandomNumber(size = 16) {\r\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\r\n    return 'x'.repeat(size).replace(/x/g, randomChar);\r\n  }\r\n  function makeElFocusable($el) {\r\n    $el.attr('tabIndex', '0');\r\n  }\r\n  function makeElNotFocusable($el) {\r\n    $el.attr('tabIndex', '-1');\r\n  }\r\n  function addElRole($el, role) {\r\n    $el.attr('role', role);\r\n  }\r\n  function addElRoleDescription($el, description) {\r\n    $el.attr('aria-roledescription', description);\r\n  }\r\n  function addElControls($el, controls) {\r\n    $el.attr('aria-controls', controls);\r\n  }\r\n  function addElLabel($el, label) {\r\n    $el.attr('aria-label', label);\r\n  }\r\n  function addElId($el, id) {\r\n    $el.attr('id', id);\r\n  }\r\n  function addElLive($el, live) {\r\n    $el.attr('aria-live', live);\r\n  }\r\n  function disableEl($el) {\r\n    $el.attr('aria-disabled', true);\r\n  }\r\n  function enableEl($el) {\r\n    $el.attr('aria-disabled', false);\r\n  }\r\n\r\n  function onEnterOrSpaceKey(e) {\r\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\r\n    const params = carousel.params.a11y;\r\n    const $targetEl = $(e.target);\r\n    if (\r\n      carousel.navigation &&\r\n      carousel.navigation.$nextEl &&\r\n      $targetEl.is(carousel.navigation.$nextEl)\r\n    ) {\r\n      if (!(carousel.isEnd && !carousel.params.loop)) {\r\n        carousel.slideNext();\r\n      }\r\n      if (carousel.isEnd) {\r\n        notify(params.lastSlideMessage);\r\n      } else {\r\n        notify(params.nextSlideMessage);\r\n      }\r\n    }\r\n    if (\r\n      carousel.navigation &&\r\n      carousel.navigation.$prevEl &&\r\n      $targetEl.is(carousel.navigation.$prevEl)\r\n    ) {\r\n      if (!(carousel.isBeginning && !carousel.params.loop)) {\r\n        carousel.slidePrev();\r\n      }\r\n      if (carousel.isBeginning) {\r\n        notify(params.firstSlideMessage);\r\n      } else {\r\n        notify(params.prevSlideMessage);\r\n      }\r\n    }\r\n\r\n    if (\r\n      carousel.pagination &&\r\n      $targetEl.is(classesToSelector(carousel.params.pagination.bulletClass))\r\n    ) {\r\n      $targetEl[0].click();\r\n    }\r\n  }\r\n\r\n  function updateNavigation() {\r\n    if (carousel.params.loop || carousel.params.rewind || !carousel.navigation) return;\r\n    const { $nextEl, $prevEl } = carousel.navigation;\r\n\r\n    if ($prevEl && $prevEl.length > 0) {\r\n      if (carousel.isBeginning) {\r\n        disableEl($prevEl);\r\n        makeElNotFocusable($prevEl);\r\n      } else {\r\n        enableEl($prevEl);\r\n        makeElFocusable($prevEl);\r\n      }\r\n    }\r\n    if ($nextEl && $nextEl.length > 0) {\r\n      if (carousel.isEnd) {\r\n        disableEl($nextEl);\r\n        makeElNotFocusable($nextEl);\r\n      } else {\r\n        enableEl($nextEl);\r\n        makeElFocusable($nextEl);\r\n      }\r\n    }\r\n  }\r\n\r\n  function hasPagination() {\r\n    return carousel.pagination && carousel.pagination.bullets && carousel.pagination.bullets.length;\r\n  }\r\n\r\n  function hasClickablePagination() {\r\n    return hasPagination() && carousel.params.pagination.clickable;\r\n  }\r\n\r\n  function updatePagination() {\r\n    const params = carousel.params.a11y;\r\n    if (!hasPagination()) return;\r\n    carousel.pagination.bullets.each(bulletEl => {\r\n      const $bulletEl = $(bulletEl);\r\n      if (carousel.params.pagination.clickable) {\r\n        makeElFocusable($bulletEl);\r\n        if (!carousel.params.pagination.renderBullet) {\r\n          addElRole($bulletEl, 'button');\r\n          addElLabel(\r\n            $bulletEl,\r\n            params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1)\r\n          );\r\n        }\r\n      }\r\n      if ($bulletEl.is(`.${carousel.params.pagination.bulletActiveClass}`)) {\r\n        $bulletEl.attr('aria-current', 'true');\r\n      } else {\r\n        $bulletEl.removeAttr('aria-current');\r\n      }\r\n    });\r\n  }\r\n\r\n  const initNavEl = ($el, wrapperId, message) => {\r\n    makeElFocusable($el);\r\n    if ($el[0].tagName !== 'BUTTON') {\r\n      addElRole($el, 'button');\r\n      $el.on('keydown', onEnterOrSpaceKey);\r\n    }\r\n    addElLabel($el, message);\r\n    addElControls($el, wrapperId);\r\n  };\r\n  const handlePointerDown = () => {\r\n    carousel.a11y.clicked = true;\r\n  };\r\n  const handlePointerUp = () => {\r\n    requestAnimationFrame(() => {\r\n      requestAnimationFrame(() => {\r\n        if (!carousel.destroyed) {\r\n          carousel.a11y.clicked = false;\r\n        }\r\n      });\r\n    });\r\n  };\r\n\r\n  const handleFocus = e => {\r\n    if (carousel.a11y.clicked) return;\r\n    const slideEl = e.target.closest(`.${carousel.params.slideClass}`);\r\n    if (!slideEl || !carousel.slides.includes(slideEl)) return;\r\n    const isActive = carousel.slides.indexOf(slideEl) === carousel.activeIndex;\r\n    const isVisible =\r\n      carousel.params.watchSlidesProgress &&\r\n      carousel.visibleSlides &&\r\n      carousel.visibleSlides.includes(slideEl);\r\n    if (isActive || isVisible) return;\r\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\r\n    if (carousel.isHorizontal()) {\r\n      carousel.el.scrollLeft = 0;\r\n    } else {\r\n      carousel.el.scrollTop = 0;\r\n    }\r\n    carousel.slideTo(carousel.slides.indexOf(slideEl), 0);\r\n  };\r\n\r\n  const initSlides = () => {\r\n    const params = carousel.params.a11y;\r\n    if (params.itemRoleDescriptionMessage) {\r\n      addElRoleDescription($(carousel.slides), params.itemRoleDescriptionMessage);\r\n    }\r\n    if (params.slideRole) {\r\n      addElRole($(carousel.slides), params.slideRole);\r\n    }\r\n\r\n    const slidesLength = carousel.params.loop\r\n      ? carousel.slides.filter(el => !el.classList.contains(carousel.params.slideDuplicateClass))\r\n          .length\r\n      : carousel.slides.length;\r\n    if (params.slideLabelMessage) {\r\n      carousel.slides.each((slideEl, index) => {\r\n        const $slideEl = $(slideEl);\r\n        const slideIndex = carousel.params.loop\r\n          ? parseInt($slideEl.attr('data-carousel-slide-index'), 10)\r\n          : index;\r\n        const ariaLabelMessage = params.slideLabelMessage\r\n          .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\r\n          .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\r\n        addElLabel($slideEl, ariaLabelMessage);\r\n      });\r\n    }\r\n  };\r\n\r\n  const init = () => {\r\n    const params = carousel.params.a11y;\r\n\r\n    carousel.$el.append(liveRegion);\r\n\r\n    // Container\r\n    const $containerEl = carousel.$el;\r\n    if (params.containerRoleDescriptionMessage) {\r\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\r\n    }\r\n    if (params.containerMessage) {\r\n      addElLabel($containerEl, params.containerMessage);\r\n    }\r\n\r\n    // Wrapper\r\n    const $wrapperEl = carousel.$wrapperEl;\r\n    const wrapperId =\r\n      params.id || $wrapperEl.attr('id') || `carousel-wrapper-${getRandomNumber(16)}`;\r\n    const live = carousel.params.autoplay && carousel.params.autoplay.enabled ? 'off' : 'polite';\r\n    addElId($wrapperEl, wrapperId);\r\n    addElLive($wrapperEl, live);\r\n\r\n    // Slide\r\n    initSlides();\r\n\r\n    // Navigation\r\n    let $nextEl;\r\n    let $prevEl;\r\n    if (carousel.navigation && carousel.navigation.$nextEl) {\r\n      $nextEl = carousel.navigation.$nextEl;\r\n    }\r\n    if (carousel.navigation && carousel.navigation.$prevEl) {\r\n      $prevEl = carousel.navigation.$prevEl;\r\n    }\r\n\r\n    if ($nextEl && $nextEl.length) {\r\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\r\n    }\r\n    if ($prevEl && $prevEl.length) {\r\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\r\n    }\r\n\r\n    // Pagination\r\n    if (hasClickablePagination()) {\r\n      carousel.pagination.$el.on(\r\n        'keydown',\r\n        classesToSelector(carousel.params.pagination.bulletClass),\r\n        onEnterOrSpaceKey\r\n      );\r\n    }\r\n\r\n    // Tab focus\r\n    carousel.$el.on('focus', handleFocus, true);\r\n    carousel.$el.on('pointerdown', handlePointerDown, true);\r\n    carousel.$el.on('pointerup', handlePointerUp, true);\r\n  };\r\n  function destroy() {\r\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\r\n\r\n    let $nextEl;\r\n    let $prevEl;\r\n    if (carousel.navigation && carousel.navigation.$nextEl) {\r\n      $nextEl = carousel.navigation.$nextEl;\r\n    }\r\n    if (carousel.navigation && carousel.navigation.$prevEl) {\r\n      $prevEl = carousel.navigation.$prevEl;\r\n    }\r\n    if ($nextEl) {\r\n      $nextEl.off('keydown', onEnterOrSpaceKey);\r\n    }\r\n    if ($prevEl) {\r\n      $prevEl.off('keydown', onEnterOrSpaceKey);\r\n    }\r\n\r\n    // Pagination\r\n    if (hasClickablePagination()) {\r\n      carousel.pagination.$el.off(\r\n        'keydown',\r\n        classesToSelector(carousel.params.pagination.bulletClass),\r\n        onEnterOrSpaceKey\r\n      );\r\n    }\r\n\r\n    // Tab focus\r\n    carousel.$el.off('focus', handleFocus, true);\r\n    carousel.$el.off('pointerdown', handlePointerDown, true);\r\n    carousel.$el.off('pointerup', handlePointerUp, true);\r\n  }\r\n\r\n  on('beforeInit', () => {\r\n    liveRegion = $(\r\n      `<span class=\"${carousel.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`\r\n    );\r\n  });\r\n\r\n  on('afterInit', () => {\r\n    if (!carousel.params.a11y.enabled) return;\r\n    init();\r\n  });\r\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\r\n    if (!carousel.params.a11y.enabled) return;\r\n    initSlides();\r\n  });\r\n  on('fromEdge toEdge afterInit lock unlock', () => {\r\n    if (!carousel.params.a11y.enabled) return;\r\n    updateNavigation();\r\n  });\r\n  on('paginationUpdate', () => {\r\n    if (!carousel.params.a11y.enabled) return;\r\n    updatePagination();\r\n  });\r\n  on('destroy', () => {\r\n    if (!carousel.params.a11y.enabled) return;\r\n    destroy();\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow } from 'ssr-window';\r\n\r\nexport default function History({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    history: {\r\n      enabled: false,\r\n      root: '',\r\n      replaceState: false,\r\n      key: 'slides',\r\n      keepQuery: false\r\n    }\r\n  });\r\n\r\n  let initialized = false;\r\n  let paths = {};\r\n\r\n  const slugify = text => {\r\n    return text\r\n      .toString()\r\n      .replace(/\\s+/g, '-')\r\n      .replace(/[^\\w-]+/g, '')\r\n      .replace(/--+/g, '-')\r\n      .replace(/^-+/, '')\r\n      .replace(/-+$/, '');\r\n  };\r\n\r\n  const getPathValues = urlOverride => {\r\n    const window = getWindow();\r\n    let location;\r\n    if (urlOverride) {\r\n      location = new URL(urlOverride);\r\n    } else {\r\n      location = window.location;\r\n    }\r\n    const pathArray = location.pathname\r\n      .slice(1)\r\n      .split('/')\r\n      .filter(part => part !== '');\r\n    const total = pathArray.length;\r\n    const key = pathArray[total - 2];\r\n    const value = pathArray[total - 1];\r\n    return { key, value };\r\n  };\r\n  const setHistory = (key, index) => {\r\n    const window = getWindow();\r\n    if (!initialized || !carousel.params.history.enabled) return;\r\n    let location;\r\n    if (carousel.params.url) {\r\n      location = new URL(carousel.params.url);\r\n    } else {\r\n      location = window.location;\r\n    }\r\n    const slide = carousel.slides.eq(index);\r\n    let value = slugify(slide.attr('data-history'));\r\n    if (carousel.params.history.root.length > 0) {\r\n      let root = carousel.params.history.root;\r\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\r\n      value = `${root}/${key}/${value}`;\r\n    } else if (!location.pathname.includes(key)) {\r\n      value = `${key}/${value}`;\r\n    }\r\n    if (carousel.params.history.keepQuery) {\r\n      value += location.search;\r\n    }\r\n    const currentState = window.history.state;\r\n    if (currentState && currentState.value === value) {\r\n      return;\r\n    }\r\n    if (carousel.params.history.replaceState) {\r\n      window.history.replaceState({ value }, null, value);\r\n    } else {\r\n      window.history.pushState({ value }, null, value);\r\n    }\r\n  };\r\n\r\n  const scrollToSlide = (speed, value, runCallbacks) => {\r\n    if (value) {\r\n      for (let i = 0, length = carousel.slides.length; i < length; i += 1) {\r\n        const slide = carousel.slides.eq(i);\r\n        const slideHistory = slugify(slide.attr('data-history'));\r\n        if (slideHistory === value && !slide.hasClass(carousel.params.slideDuplicateClass)) {\r\n          const index = slide.index();\r\n          carousel.slideTo(index, speed, runCallbacks);\r\n        }\r\n      }\r\n    } else {\r\n      carousel.slideTo(0, speed, runCallbacks);\r\n    }\r\n  };\r\n\r\n  const setHistoryPopState = () => {\r\n    paths = getPathValues(carousel.params.url);\r\n    scrollToSlide(carousel.params.speed, paths.value, false);\r\n  };\r\n\r\n  const init = () => {\r\n    const window = getWindow();\r\n    if (!carousel.params.history) return;\r\n    if (!window.history || !window.history.pushState) {\r\n      carousel.params.history.enabled = false;\r\n      carousel.params.hashNavigation.enabled = true;\r\n      return;\r\n    }\r\n    initialized = true;\r\n    paths = getPathValues(carousel.params.url);\r\n    if (!paths.key && !paths.value) return;\r\n    scrollToSlide(0, paths.value, carousel.params.runCallbacksOnInit);\r\n    if (!carousel.params.history.replaceState) {\r\n      window.addEventListener('popstate', setHistoryPopState);\r\n    }\r\n  };\r\n  const destroy = () => {\r\n    const window = getWindow();\r\n    if (!carousel.params.history.replaceState) {\r\n      window.removeEventListener('popstate', setHistoryPopState);\r\n    }\r\n  };\r\n\r\n  on('init', () => {\r\n    if (carousel.params.history.enabled) {\r\n      init();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    if (carousel.params.history.enabled) {\r\n      destroy();\r\n    }\r\n  });\r\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\r\n    if (initialized) {\r\n      setHistory(carousel.params.history.key, carousel.activeIndex);\r\n    }\r\n  });\r\n  on('slideChange', () => {\r\n    if (initialized && carousel.params.cssMode) {\r\n      setHistory(carousel.params.history.key, carousel.activeIndex);\r\n    }\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { getWindow, getDocument } from 'ssr-window';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function HashNavigation({ carousel, extendParams, emit, on }) {\r\n  let initialized = false;\r\n  const document = getDocument();\r\n  const window = getWindow();\r\n  extendParams({\r\n    hashNavigation: {\r\n      enabled: false,\r\n      replaceState: false,\r\n      watchState: false\r\n    }\r\n  });\r\n  const onHashChange = () => {\r\n    emit('hashChange');\r\n    const newHash = document.location.hash.replace('#', '');\r\n    const activeSlideHash = carousel.slides.eq(carousel.activeIndex).attr('data-hash');\r\n    if (newHash !== activeSlideHash) {\r\n      const newIndex = carousel.$wrapperEl\r\n        .children(`.${carousel.params.slideClass}[data-hash=\"${newHash}\"]`)\r\n        .index();\r\n      if (typeof newIndex === 'undefined') return;\r\n      carousel.slideTo(newIndex);\r\n    }\r\n  };\r\n  const setHash = () => {\r\n    if (!initialized || !carousel.params.hashNavigation.enabled) return;\r\n    if (\r\n      carousel.params.hashNavigation.replaceState &&\r\n      window.history &&\r\n      window.history.replaceState\r\n    ) {\r\n      window.history.replaceState(\r\n        null,\r\n        null,\r\n        `#${carousel.slides.eq(carousel.activeIndex).attr('data-hash')}` || ''\r\n      );\r\n      emit('hashSet');\r\n    } else {\r\n      const slide = carousel.slides.eq(carousel.activeIndex);\r\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\r\n      document.location.hash = hash || '';\r\n      emit('hashSet');\r\n    }\r\n  };\r\n  const init = () => {\r\n    if (\r\n      !carousel.params.hashNavigation.enabled ||\r\n      (carousel.params.history && carousel.params.history.enabled)\r\n    )\r\n      return;\r\n    initialized = true;\r\n    const hash = document.location.hash.replace('#', '');\r\n    if (hash) {\r\n      const speed = 0;\r\n      for (let i = 0, length = carousel.slides.length; i < length; i += 1) {\r\n        const slide = carousel.slides.eq(i);\r\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\r\n        if (slideHash === hash && !slide.hasClass(carousel.params.slideDuplicateClass)) {\r\n          const index = slide.index();\r\n          carousel.slideTo(index, speed, carousel.params.runCallbacksOnInit, true);\r\n        }\r\n      }\r\n    }\r\n    if (carousel.params.hashNavigation.watchState) {\r\n      $(window).on('hashchange', onHashChange);\r\n    }\r\n  };\r\n  const destroy = () => {\r\n    if (carousel.params.hashNavigation.watchState) {\r\n      $(window).off('hashchange', onHashChange);\r\n    }\r\n  };\r\n\r\n  on('init', () => {\r\n    if (carousel.params.hashNavigation.enabled) {\r\n      init();\r\n    }\r\n  });\r\n  on('destroy', () => {\r\n    if (carousel.params.hashNavigation.enabled) {\r\n      destroy();\r\n    }\r\n  });\r\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\r\n    if (initialized) {\r\n      setHash();\r\n    }\r\n  });\r\n  on('slideChange', () => {\r\n    if (initialized && carousel.params.cssMode) {\r\n      setHash();\r\n    }\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { isObject } from '../../../shared/utils';\r\nimport $ from '../../../shared/dom';\r\n\r\nexport default function Thumb({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    thumbs: {\r\n      carousel: null,\r\n      multipleActiveThumbs: true,\r\n      autoScrollOffset: 0,\r\n      slideThumbActiveClass: 'vts-carousel-slide-thumb-active',\r\n      thumbsContainerClass: 'vts-carousel-thumbs'\r\n    }\r\n  });\r\n\r\n  let initialized = false;\r\n  let carouselCreated = false;\r\n\r\n  carousel.thumbs = {\r\n    carousel: null\r\n  };\r\n\r\n  function onThumbClick() {\r\n    const thumbscarousel = carousel.thumbs.carousel;\r\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\r\n\r\n    const clickedIndex = thumbscarousel.clickedIndex;\r\n    const clickedSlide = thumbscarousel.clickedSlide;\r\n    if (clickedSlide && $(clickedSlide).hasClass(carousel.params.thumbs.slideThumbActiveClass))\r\n      return;\r\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\r\n    let slideToIndex;\r\n    if (thumbscarousel.params.loop) {\r\n      slideToIndex = parseInt($(thumbscarousel.clickedSlide).attr('data-carousel-slide-index'), 10);\r\n    } else {\r\n      slideToIndex = clickedIndex;\r\n    }\r\n    if (carousel.params.loop) {\r\n      let currentIndex = carousel.activeIndex;\r\n      if (carousel.slides.eq(currentIndex).hasClass(carousel.params.slideDuplicateClass)) {\r\n        carousel.loopFix();\r\n        // eslint-disable-next-line\r\n        carousel._clientLeft = carousel.$wrapperEl[0].clientLeft;\r\n        currentIndex = carousel.activeIndex;\r\n      }\r\n      const prevIndex = carousel.slides\r\n        .eq(currentIndex)\r\n        .prevAll(`[data-carousel-slide-index=\"${slideToIndex}\"]`)\r\n        .eq(0)\r\n        .index();\r\n      const nextIndex = carousel.slides\r\n        .eq(currentIndex)\r\n        .nextAll(`[data-carousel-slide-index=\"${slideToIndex}\"]`)\r\n        .eq(0)\r\n        .index();\r\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\r\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\r\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\r\n      else slideToIndex = prevIndex;\r\n    }\r\n    carousel.slideTo(slideToIndex);\r\n  }\r\n\r\n  function init() {\r\n    const { thumbs: thumbsParams } = carousel.params;\r\n    if (initialized) return false;\r\n    initialized = true;\r\n    const carouselClass = carousel.constructor;\r\n    if (thumbsParams.carousel instanceof carouselClass) {\r\n      carousel.thumbs.carousel = thumbsParams.carousel;\r\n      Object.assign(carousel.thumbs.carousel.originalParams, {\r\n        watchSlidesProgress: true,\r\n        slideToClickedSlide: false\r\n      });\r\n      Object.assign(carousel.thumbs.carousel.params, {\r\n        watchSlidesProgress: true,\r\n        slideToClickedSlide: false\r\n      });\r\n    } else if (isObject(thumbsParams.carousel)) {\r\n      const thumbscarouselParams = Object.assign({}, thumbsParams.carousel);\r\n      Object.assign(thumbscarouselParams, {\r\n        watchSlidesProgress: true,\r\n        slideToClickedSlide: false\r\n      });\r\n      carousel.thumbs.carousel = new carouselClass(thumbscarouselParams);\r\n      carouselCreated = true;\r\n    }\r\n    carousel.thumbs.carousel.$el.addClass(carousel.params.thumbs.thumbsContainerClass);\r\n    carousel.thumbs.carousel.on('tap', onThumbClick);\r\n    return true;\r\n  }\r\n\r\n  function update(initial) {\r\n    const thumbscarousel = carousel.thumbs.carousel;\r\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\r\n\r\n    const slidesPerView =\r\n      thumbscarousel.params.slidesPerView === 'auto'\r\n        ? thumbscarousel.slidesPerViewDynamic()\r\n        : thumbscarousel.params.slidesPerView;\r\n\r\n    // Activate thumbs\r\n    let thumbsToActivate = 1;\r\n    const thumbActiveClass = carousel.params.thumbs.slideThumbActiveClass;\r\n\r\n    if (carousel.params.slidesPerView > 1 && !carousel.params.centeredSlides) {\r\n      thumbsToActivate = carousel.params.slidesPerView;\r\n    }\r\n\r\n    if (!carousel.params.thumbs.multipleActiveThumbs) {\r\n      thumbsToActivate = 1;\r\n    }\r\n\r\n    thumbsToActivate = Math.floor(thumbsToActivate);\r\n\r\n    thumbscarousel.slides.removeClass(thumbActiveClass);\r\n    if (\r\n      thumbscarousel.params.loop ||\r\n      (thumbscarousel.params.virtual && thumbscarousel.params.virtual.enabled)\r\n    ) {\r\n      for (let i = 0; i < thumbsToActivate; i += 1) {\r\n        thumbscarousel.$wrapperEl\r\n          .children(`[data-carousel-slide-index=\"${carousel.realIndex + i}\"]`)\r\n          .addClass(thumbActiveClass);\r\n      }\r\n    } else {\r\n      for (let i = 0; i < thumbsToActivate; i += 1) {\r\n        thumbscarousel.slides.eq(carousel.realIndex + i).addClass(thumbActiveClass);\r\n      }\r\n    }\r\n\r\n    const autoScrollOffset = carousel.params.thumbs.autoScrollOffset;\r\n    const useOffset = autoScrollOffset && !thumbscarousel.params.loop;\r\n    if (carousel.realIndex !== thumbscarousel.realIndex || useOffset) {\r\n      let currentThumbsIndex = thumbscarousel.activeIndex;\r\n      let newThumbsIndex;\r\n      let direction;\r\n      if (thumbscarousel.params.loop) {\r\n        if (\r\n          thumbscarousel.slides\r\n            .eq(currentThumbsIndex)\r\n            .hasClass(thumbscarousel.params.slideDuplicateClass)\r\n        ) {\r\n          thumbscarousel.loopFix();\r\n          // eslint-disable-next-line\r\n          thumbscarousel._clientLeft = thumbscarousel.$wrapperEl[0].clientLeft;\r\n          currentThumbsIndex = thumbscarousel.activeIndex;\r\n        }\r\n        // Find actual thumbs index to slide to\r\n        const prevThumbsIndex = thumbscarousel.slides\r\n          .eq(currentThumbsIndex)\r\n          .prevAll(`[data-carousel-slide-index=\"${carousel.realIndex}\"]`)\r\n          .eq(0)\r\n          .index();\r\n        const nextThumbsIndex = thumbscarousel.slides\r\n          .eq(currentThumbsIndex)\r\n          .nextAll(`[data-carousel-slide-index=\"${carousel.realIndex}\"]`)\r\n          .eq(0)\r\n          .index();\r\n        if (typeof prevThumbsIndex === 'undefined') {\r\n          newThumbsIndex = nextThumbsIndex;\r\n        } else if (typeof nextThumbsIndex === 'undefined') {\r\n          newThumbsIndex = prevThumbsIndex;\r\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\r\n          newThumbsIndex =\r\n            thumbscarousel.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\r\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\r\n          newThumbsIndex = nextThumbsIndex;\r\n        } else {\r\n          newThumbsIndex = prevThumbsIndex;\r\n        }\r\n        direction = carousel.activeIndex > carousel.previousIndex ? 'next' : 'prev';\r\n      } else {\r\n        newThumbsIndex = carousel.realIndex;\r\n        direction = newThumbsIndex > carousel.previousIndex ? 'next' : 'prev';\r\n      }\r\n      if (useOffset) {\r\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\r\n      }\r\n\r\n      if (\r\n        thumbscarousel.visibleSlidesIndexes &&\r\n        thumbscarousel.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\r\n      ) {\r\n        if (thumbscarousel.params.centeredSlides) {\r\n          if (newThumbsIndex > currentThumbsIndex) {\r\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\r\n          } else {\r\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\r\n          }\r\n        } else if (\r\n          newThumbsIndex > currentThumbsIndex &&\r\n          thumbscarousel.params.slidesPerGroup === 1\r\n        ) {\r\n          // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\r\n        }\r\n        thumbscarousel.slideTo(newThumbsIndex, initial ? 0 : undefined);\r\n      }\r\n    }\r\n  }\r\n\r\n  on('beforeInit', () => {\r\n    const { thumbs } = carousel.params;\r\n    if (!thumbs || !thumbs.carousel) return;\r\n    init();\r\n    update(true);\r\n  });\r\n  on('slideChange update resize observerUpdate', () => {\r\n    update();\r\n  });\r\n  on('setTransition', (_s, duration) => {\r\n    const thumbscarousel = carousel.thumbs.carousel;\r\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\r\n    thumbscarousel.setTransition(duration);\r\n  });\r\n  on('beforeDestroy', () => {\r\n    const thumbscarousel = carousel.thumbs.carousel;\r\n    if (!thumbscarousel || thumbscarousel.destroyed) return;\r\n    if (carouselCreated) {\r\n      thumbscarousel.destroy();\r\n    }\r\n  });\r\n\r\n  Object.assign(carousel.thumbs, {\r\n    init,\r\n    update\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport { now } from '../../../shared/utils';\r\n\r\nexport default function freeMode({ carousel, extendParams, emit, once }) {\r\n  extendParams({\r\n    freeMode: {\r\n      enabled: false,\r\n      momentum: true,\r\n      momentumRatio: 1,\r\n      momentumBounce: true,\r\n      momentumBounceRatio: 1,\r\n      momentumVelocityRatio: 1,\r\n      sticky: false,\r\n      minimumVelocity: 0.02\r\n    }\r\n  });\r\n\r\n  function onTouchStart() {\r\n    const translate = carousel.getTranslate();\r\n    carousel.setTranslate(translate);\r\n    carousel.setTransition(0);\r\n    carousel.touchEventsData.velocities.length = 0;\r\n    carousel.freeMode.onTouchEnd({\r\n      currentPos: carousel.rtl ? carousel.translate : -carousel.translate\r\n    });\r\n  }\r\n\r\n  function onTouchMove() {\r\n    const { touchEventsData: data, touches } = carousel;\r\n    // Velocity\r\n    if (data.velocities.length === 0) {\r\n      data.velocities.push({\r\n        position: touches[carousel.isHorizontal() ? 'startX' : 'startY'],\r\n        time: data.touchStartTime\r\n      });\r\n    }\r\n    data.velocities.push({\r\n      position: touches[carousel.isHorizontal() ? 'currentX' : 'currentY'],\r\n      time: now()\r\n    });\r\n  }\r\n\r\n  function onTouchEnd({ currentPos }) {\r\n    const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = carousel;\r\n    // Time diff\r\n    const touchEndTime = now();\r\n    const timeDiff = touchEndTime - data.touchStartTime;\r\n\r\n    if (currentPos < -carousel.minTranslate()) {\r\n      carousel.slideTo(carousel.activeIndex);\r\n      return;\r\n    }\r\n    if (currentPos > -carousel.maxTranslate()) {\r\n      if (carousel.slides.length < snapGrid.length) {\r\n        carousel.slideTo(snapGrid.length - 1);\r\n      } else {\r\n        carousel.slideTo(carousel.slides.length - 1);\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (params.freeMode.momentum) {\r\n      if (data.velocities.length > 1) {\r\n        const lastMoveEvent = data.velocities.pop();\r\n        const velocityEvent = data.velocities.pop();\r\n\r\n        const distance = lastMoveEvent.position - velocityEvent.position;\r\n        const time = lastMoveEvent.time - velocityEvent.time;\r\n        carousel.velocity = distance / time;\r\n        carousel.velocity /= 2;\r\n        if (Math.abs(carousel.velocity) < params.freeMode.minimumVelocity) {\r\n          carousel.velocity = 0;\r\n        }\r\n        // this implies that the user stopped moving a finger then released.\r\n        // There would be no events with distance zero, so the last event is stale.\r\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\r\n          carousel.velocity = 0;\r\n        }\r\n      } else {\r\n        carousel.velocity = 0;\r\n      }\r\n      carousel.velocity *= params.freeMode.momentumVelocityRatio;\r\n\r\n      data.velocities.length = 0;\r\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\r\n      const momentumDistance = carousel.velocity * momentumDuration;\r\n\r\n      let newPosition = carousel.translate + momentumDistance;\r\n      if (rtl) newPosition = -newPosition;\r\n\r\n      let doBounce = false;\r\n      let afterBouncePosition;\r\n      const bounceAmount = Math.abs(carousel.velocity) * 20 * params.freeMode.momentumBounceRatio;\r\n      let needsLoopFix;\r\n      if (newPosition < carousel.maxTranslate()) {\r\n        if (params.freeMode.momentumBounce) {\r\n          if (newPosition + carousel.maxTranslate() < -bounceAmount) {\r\n            newPosition = carousel.maxTranslate() - bounceAmount;\r\n          }\r\n          afterBouncePosition = carousel.maxTranslate();\r\n          doBounce = true;\r\n          data.allowMomentumBounce = true;\r\n        } else {\r\n          newPosition = carousel.maxTranslate();\r\n        }\r\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\r\n      } else if (newPosition > carousel.minTranslate()) {\r\n        if (params.freeMode.momentumBounce) {\r\n          if (newPosition - carousel.minTranslate() > bounceAmount) {\r\n            newPosition = carousel.minTranslate() + bounceAmount;\r\n          }\r\n          afterBouncePosition = carousel.minTranslate();\r\n          doBounce = true;\r\n          data.allowMomentumBounce = true;\r\n        } else {\r\n          newPosition = carousel.minTranslate();\r\n        }\r\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\r\n      } else if (params.freeMode.sticky) {\r\n        let nextSlide;\r\n        for (let j = 0; j < snapGrid.length; j += 1) {\r\n          if (snapGrid[j] > -newPosition) {\r\n            nextSlide = j;\r\n            break;\r\n          }\r\n        }\r\n\r\n        if (\r\n          Math.abs(snapGrid[nextSlide] - newPosition) <\r\n            Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\r\n          carousel.swipeDirection === 'next'\r\n        ) {\r\n          newPosition = snapGrid[nextSlide];\r\n        } else {\r\n          newPosition = snapGrid[nextSlide - 1];\r\n        }\r\n        newPosition = -newPosition;\r\n      }\r\n      if (needsLoopFix) {\r\n        once('transitionEnd', () => {\r\n          carousel.loopFix();\r\n        });\r\n      }\r\n      // Fix duration\r\n      if (carousel.velocity !== 0) {\r\n        if (rtl) {\r\n          momentumDuration = Math.abs((-newPosition - carousel.translate) / carousel.velocity);\r\n        } else {\r\n          momentumDuration = Math.abs((newPosition - carousel.translate) / carousel.velocity);\r\n        }\r\n        if (params.freeMode.sticky) {\r\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\r\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\r\n          // It's easy to see this when simulating touch with mouse events. To fix this,\r\n          // limit single-slide swipes to the default slide duration. This also has the\r\n          // nice side effect of matching slide speed if the user stopped moving before\r\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\r\n          // For faster swipes, also apply limits (albeit higher ones).\r\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - carousel.translate);\r\n          const currentSlideSize = carousel.slidesSizesGrid[carousel.activeIndex];\r\n          if (moveDistance < currentSlideSize) {\r\n            momentumDuration = params.speed;\r\n          } else if (moveDistance < 2 * currentSlideSize) {\r\n            momentumDuration = params.speed * 1.5;\r\n          } else {\r\n            momentumDuration = params.speed * 2.5;\r\n          }\r\n        }\r\n      } else if (params.freeMode.sticky) {\r\n        carousel.slideToClosest();\r\n        return;\r\n      }\r\n\r\n      if (params.freeMode.momentumBounce && doBounce) {\r\n        carousel.updateProgress(afterBouncePosition);\r\n        carousel.setTransition(momentumDuration);\r\n        carousel.setTranslate(newPosition);\r\n        carousel.transitionStart(true, carousel.swipeDirection);\r\n        carousel.animating = true;\r\n        $wrapperEl.transitionEnd(() => {\r\n          if (!carousel || carousel.destroyed || !data.allowMomentumBounce) return;\r\n          emit('momentumBounce');\r\n          carousel.setTransition(params.speed);\r\n          setTimeout(() => {\r\n            carousel.setTranslate(afterBouncePosition);\r\n            $wrapperEl.transitionEnd(() => {\r\n              if (!carousel || carousel.destroyed) return;\r\n              carousel.transitionEnd();\r\n            });\r\n          }, 0);\r\n        });\r\n      } else if (carousel.velocity) {\r\n        emit('_freeModeNoMomentumRelease');\r\n        carousel.updateProgress(newPosition);\r\n        carousel.setTransition(momentumDuration);\r\n        carousel.setTranslate(newPosition);\r\n        carousel.transitionStart(true, carousel.swipeDirection);\r\n        if (!carousel.animating) {\r\n          carousel.animating = true;\r\n          $wrapperEl.transitionEnd(() => {\r\n            if (!carousel || carousel.destroyed) return;\r\n            carousel.transitionEnd();\r\n          });\r\n        }\r\n      } else {\r\n        carousel.updateProgress(newPosition);\r\n      }\r\n\r\n      carousel.updateActiveIndex();\r\n      carousel.updateSlidesClasses();\r\n    } else if (params.freeMode.sticky) {\r\n      carousel.slideToClosest();\r\n      return;\r\n    } else if (params.freeMode) {\r\n      emit('_freeModeNoMomentumRelease');\r\n    }\r\n\r\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\r\n      carousel.updateProgress();\r\n      carousel.updateActiveIndex();\r\n      carousel.updateSlidesClasses();\r\n    }\r\n  }\r\n\r\n  Object.assign(carousel, {\r\n    freeMode: {\r\n      onTouchStart,\r\n      onTouchMove,\r\n      onTouchEnd\r\n    }\r\n  });\r\n}\r\n","//@ts-nocheck\r\nexport default function Grid({ carousel, extendParams }) {\r\n  extendParams({\r\n    grid: {\r\n      rows: 1,\r\n      fill: 'column'\r\n    }\r\n  });\r\n\r\n  let slidesNumberEvenToRows;\r\n  let slidesPerRow;\r\n  let numFullColumns;\r\n\r\n  const initSlides = slidesLength => {\r\n    const { slidesPerView } = carousel.params;\r\n    const { rows, fill } = carousel.params.grid;\r\n    slidesPerRow = slidesNumberEvenToRows / rows;\r\n    numFullColumns = Math.floor(slidesLength / rows);\r\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\r\n      slidesNumberEvenToRows = slidesLength;\r\n    } else {\r\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\r\n    }\r\n    if (slidesPerView !== 'auto' && fill === 'row') {\r\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\r\n    }\r\n  };\r\n\r\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\r\n    const { slidesPerGroup, spaceBetween } = carousel.params;\r\n    const { rows, fill } = carousel.params.grid;\r\n    // Set slides order\r\n    let newSlideOrderIndex;\r\n    let column;\r\n    let row;\r\n    if (fill === 'row' && slidesPerGroup > 1) {\r\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\r\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\r\n      const columnsInGroup =\r\n        groupIndex === 0\r\n          ? slidesPerGroup\r\n          : Math.min(\r\n              Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\r\n              slidesPerGroup\r\n            );\r\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\r\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\r\n\r\n      newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\r\n      slide.css({\r\n        '-webkit-order': newSlideOrderIndex,\r\n        order: newSlideOrderIndex\r\n      });\r\n    } else if (fill === 'column') {\r\n      column = Math.floor(i / rows);\r\n      row = i - column * rows;\r\n      if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\r\n        row += 1;\r\n        if (row >= rows) {\r\n          row = 0;\r\n          column += 1;\r\n        }\r\n      }\r\n    } else {\r\n      row = Math.floor(i / slidesPerRow);\r\n      column = i - row * slidesPerRow;\r\n    }\r\n    slide.css(\r\n      getDirectionLabel('margin-top'),\r\n      row !== 0 ? spaceBetween && `${spaceBetween}px` : ''\r\n    );\r\n  };\r\n\r\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\r\n    const { spaceBetween, centeredSlides, roundLengths } = carousel.params;\r\n    const { rows } = carousel.params.grid;\r\n    carousel.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\r\n    carousel.virtualSize = Math.ceil(carousel.virtualSize / rows) - spaceBetween;\r\n    carousel.$wrapperEl.css({\r\n      [getDirectionLabel('width')]: `${carousel.virtualSize + spaceBetween}px`\r\n    });\r\n    if (centeredSlides) {\r\n      snapGrid.splice(0, snapGrid.length);\r\n      const newSlidesGrid = [];\r\n      for (let i = 0; i < snapGrid.length; i += 1) {\r\n        let slidesGridItem = snapGrid[i];\r\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\r\n        if (snapGrid[i] < carousel.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\r\n      }\r\n      snapGrid.push(...newSlidesGrid);\r\n    }\r\n  };\r\n\r\n  carousel.grid = {\r\n    initSlides,\r\n    updateSlide,\r\n    updateWrapperSize\r\n  };\r\n}\r\n","//@ts-nocheck\r\nexport default function appendSlide(slides) {\r\n  const carousel = this;\r\n  const { $wrapperEl, params } = carousel;\r\n  if (params.loop) {\r\n    carousel.loopDestroy();\r\n  }\r\n  if (typeof slides === 'object' && 'length' in slides) {\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      if (slides[i]) $wrapperEl.append(slides[i]);\r\n    }\r\n  } else {\r\n    $wrapperEl.append(slides);\r\n  }\r\n  if (params.loop) {\r\n    carousel.loopCreate();\r\n  }\r\n  if (!params.observer) {\r\n    carousel.update();\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function prependSlide(slides) {\r\n  const carousel = this;\r\n  const { params, $wrapperEl, activeIndex } = carousel;\r\n\r\n  if (params.loop) {\r\n    carousel.loopDestroy();\r\n  }\r\n  let newActiveIndex = activeIndex + 1;\r\n  if (typeof slides === 'object' && 'length' in slides) {\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\r\n    }\r\n    newActiveIndex = activeIndex + slides.length;\r\n  } else {\r\n    $wrapperEl.prepend(slides);\r\n  }\r\n  if (params.loop) {\r\n    carousel.loopCreate();\r\n  }\r\n  if (!params.observer) {\r\n    carousel.update();\r\n  }\r\n  carousel.slideTo(newActiveIndex, 0, false);\r\n}\r\n","//@ts-nocheck\r\nexport default function addSlide(index, slides) {\r\n  const carousel = this;\r\n  const { $wrapperEl, params, activeIndex } = carousel;\r\n  let activeIndexBuffer = activeIndex;\r\n  if (params.loop) {\r\n    activeIndexBuffer -= carousel.loopedSlides;\r\n    carousel.loopDestroy();\r\n    carousel.slides = $wrapperEl.children(`.${params.slideClass}`);\r\n  }\r\n  const baseLength = carousel.slides.length;\r\n  if (index <= 0) {\r\n    carousel.prependSlide(slides);\r\n    return;\r\n  }\r\n  if (index >= baseLength) {\r\n    carousel.appendSlide(slides);\r\n    return;\r\n  }\r\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\r\n\r\n  const slidesBuffer = [];\r\n  for (let i = baseLength - 1; i >= index; i -= 1) {\r\n    const currentSlide = carousel.slides.eq(i);\r\n    currentSlide.remove();\r\n    slidesBuffer.unshift(currentSlide);\r\n  }\r\n\r\n  if (typeof slides === 'object' && 'length' in slides) {\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      if (slides[i]) $wrapperEl.append(slides[i]);\r\n    }\r\n    newActiveIndex =\r\n      activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\r\n  } else {\r\n    $wrapperEl.append(slides);\r\n  }\r\n\r\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\r\n    $wrapperEl.append(slidesBuffer[i]);\r\n  }\r\n\r\n  if (params.loop) {\r\n    carousel.loopCreate();\r\n  }\r\n  if (!params.observer) {\r\n    carousel.update();\r\n  }\r\n  if (params.loop) {\r\n    carousel.slideTo(newActiveIndex + carousel.loopedSlides, 0, false);\r\n  } else {\r\n    carousel.slideTo(newActiveIndex, 0, false);\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function removeSlide(slidesIndexes) {\r\n  const carousel = this;\r\n  const { params, $wrapperEl, activeIndex } = carousel;\r\n\r\n  let activeIndexBuffer = activeIndex;\r\n  if (params.loop) {\r\n    activeIndexBuffer -= carousel.loopedSlides;\r\n    carousel.loopDestroy();\r\n    carousel.slides = $wrapperEl.children(`.${params.slideClass}`);\r\n  }\r\n  let newActiveIndex = activeIndexBuffer;\r\n  let indexToRemove;\r\n\r\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\r\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\r\n      indexToRemove = slidesIndexes[i];\r\n      if (carousel.slides[indexToRemove]) carousel.slides.eq(indexToRemove).remove();\r\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\r\n    }\r\n    newActiveIndex = Math.max(newActiveIndex, 0);\r\n  } else {\r\n    indexToRemove = slidesIndexes;\r\n    if (carousel.slides[indexToRemove]) carousel.slides.eq(indexToRemove).remove();\r\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\r\n    newActiveIndex = Math.max(newActiveIndex, 0);\r\n  }\r\n\r\n  if (params.loop) {\r\n    carousel.loopCreate();\r\n  }\r\n\r\n  if (!params.observer) {\r\n    carousel.update();\r\n  }\r\n  if (params.loop) {\r\n    carousel.slideTo(newActiveIndex + carousel.loopedSlides, 0, false);\r\n  } else {\r\n    carousel.slideTo(newActiveIndex, 0, false);\r\n  }\r\n}\r\n","//@ts-nocheck\r\nexport default function removeAllSlides() {\r\n  const carousel = this;\r\n\r\n  const slidesIndexes = [];\r\n  for (let i = 0; i < carousel.slides.length; i += 1) {\r\n    slidesIndexes.push(i);\r\n  }\r\n  carousel.removeSlide(slidesIndexes);\r\n}\r\n","//@ts-nocheck\r\nimport appendSlide from './methods/appendSlide';\r\nimport prependSlide from './methods/prependSlide';\r\nimport addSlide from './methods/addSlide';\r\nimport removeSlide from './methods/removeSlide';\r\nimport removeAllSlides from './methods/removeAllSlides';\r\n\r\nexport default function Manipulation({ carousel }) {\r\n  Object.assign(carousel, {\r\n    appendSlide: appendSlide.bind(carousel),\r\n    prependSlide: prependSlide.bind(carousel),\r\n    addSlide: addSlide.bind(carousel),\r\n    removeSlide: removeSlide.bind(carousel),\r\n    removeAllSlides: removeAllSlides.bind(carousel)\r\n  });\r\n}\r\n","//@ts-nocheck\r\nexport default function effectInit(params) {\r\n  const {\r\n    effect,\r\n    carousel,\r\n    on,\r\n    setTranslate,\r\n    setTransition,\r\n    overwriteParams,\r\n    perspective,\r\n    recreateShadows,\r\n    getEffectParams,\r\n    containerModifierClass\r\n  } = params;\r\n\r\n  on('beforeInit', () => {\r\n    if (carousel.params.effect !== effect) return;\r\n    carousel.classNames.push(`${carousel.params.containerModifierClass}${effect}`);\r\n    if (perspective && perspective()) {\r\n      carousel.classNames.push(`${carousel.params.containerModifierClass}3d`);\r\n    }\r\n\r\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\r\n\r\n    Object.assign(carousel.params, overwriteParamsResult);\r\n    Object.assign(carousel.originalParams, overwriteParamsResult);\r\n  });\r\n  on('setTranslate', () => {\r\n    if (carousel.params.effect !== effect) return;\r\n    setTranslate();\r\n  });\r\n  on('setTransition', (_s, duration) => {\r\n    if (carousel.params.effect !== effect) return;\r\n    setTransition(duration);\r\n  });\r\n  on('transitionEnd', () => {\r\n    if (carousel.params.effect !== effect) return;\r\n    if (recreateShadows) {\r\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\r\n      // remove shadows\r\n      carousel.slides.each(slideEl => {\r\n        const $slideEl = carousel.$(slideEl);\r\n        $slideEl\r\n          .find(\r\n            '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\r\n          )\r\n          .remove();\r\n      });\r\n      // create new one\r\n      recreateShadows();\r\n    }\r\n  });\r\n\r\n  let requireUpdateOnVirtual;\r\n  on('virtualUpdate', () => {\r\n    if (carousel.params.effect !== effect) return;\r\n    if (!carousel.slides.length) {\r\n      requireUpdateOnVirtual = true;\r\n    }\r\n    requestAnimationFrame(() => {\r\n      if (requireUpdateOnVirtual && carousel.slides && carousel.slides.length) {\r\n        setTranslate();\r\n        requireUpdateOnVirtual = false;\r\n      }\r\n    });\r\n  });\r\n}\r\n","//@ts-nocheck\r\nexport default function effectTarget(effectParams, $slideEl) {\r\n  if (effectParams.transformEl) {\r\n    return $slideEl.find(effectParams.transformEl).css({\r\n      'backface-visibility': 'hidden',\r\n      '-webkit-backface-visibility': 'hidden'\r\n    });\r\n  }\r\n  return $slideEl;\r\n}\r\n","//@ts-nocheck\r\nexport default function effectVirtualTransitionEnd({ carousel, duration, transformEl, allSlides }) {\r\n  const { slides, activeIndex, $wrapperEl } = carousel;\r\n  if (carousel.params.virtualTranslate && duration !== 0) {\r\n    let eventTriggered = false;\r\n    let $transitionEndTarget;\r\n    if (allSlides) {\r\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\r\n    } else {\r\n      $transitionEndTarget = transformEl\r\n        ? slides.eq(activeIndex).find(transformEl)\r\n        : slides.eq(activeIndex);\r\n    }\r\n    $transitionEndTarget.transitionEnd(() => {\r\n      if (eventTriggered) return;\r\n      if (!carousel || carousel.destroyed) return;\r\n      eventTriggered = true;\r\n      carousel.animating = false;\r\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\r\n      for (let i = 0; i < triggerEvents.length; i += 1) {\r\n        $wrapperEl.trigger(triggerEvents[i]);\r\n      }\r\n    });\r\n  }\r\n}\r\n","//@ts-nocheck\r\nimport effectInit from '../../../shared/effect-init';\r\nimport effectTarget from '../../../shared/effect-target';\r\nimport effectVirtualTransitionEnd from '../../../shared/effect-virtual-transition-end';\r\n\r\nexport default function EffectFade({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    fadeEffect: {\r\n      crossFade: false,\r\n      transformEl: null\r\n    }\r\n  });\r\n\r\n  const setTranslate = () => {\r\n    const { slides } = carousel;\r\n    const params = carousel.params.fadeEffect;\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      const $slideEl = carousel.slides.eq(i);\r\n      const offset = $slideEl[0].carouselSlideOffset;\r\n      let tx = -offset;\r\n      if (!carousel.params.virtualTranslate) tx -= carousel.translate;\r\n      let ty = 0;\r\n      if (!carousel.isHorizontal()) {\r\n        ty = tx;\r\n        tx = 0;\r\n      }\r\n      const slideOpacity = carousel.params.fadeEffect.crossFade\r\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\r\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\r\n\r\n      const $targetEl = effectTarget(params, $slideEl);\r\n      $targetEl\r\n        .css({\r\n          opacity: slideOpacity\r\n        })\r\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\r\n    }\r\n  };\r\n  const setTransition = duration => {\r\n    const { transformEl } = carousel.params.fadeEffect;\r\n    const $transitionElements = transformEl ? carousel.slides.find(transformEl) : carousel.slides;\r\n    $transitionElements.transition(duration);\r\n    effectVirtualTransitionEnd({ carousel, duration, transformEl, allSlides: true });\r\n  };\r\n\r\n  effectInit({\r\n    effect: 'fade',\r\n    carousel,\r\n    on,\r\n    setTranslate,\r\n    setTransition,\r\n    overwriteParams: () => ({\r\n      slidesPerView: 1,\r\n      slidesPerGroup: 1,\r\n      watchSlidesProgress: true,\r\n      spaceBetween: 0,\r\n      virtualTranslate: !carousel.params.cssMode\r\n    })\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../../shared/dom';\r\nimport effectInit from '../../../shared/effect-init';\r\n\r\nexport default function EffectCube({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    cubeEffect: {\r\n      slideShadows: true,\r\n      shadow: true,\r\n      shadowOffset: 20,\r\n      shadowScale: 0.94\r\n    }\r\n  });\r\n\r\n  const createSlideShadows = ($slideEl, progress, isHorizontal) => {\r\n    let shadowBefore = isHorizontal\r\n      ? $slideEl.find('.vts-carousel-slide-shadow-left')\r\n      : $slideEl.find('.vts-carousel-slide-shadow-top');\r\n    let shadowAfter = isHorizontal\r\n      ? $slideEl.find('.vts-carousel-slide-shadow-right')\r\n      : $slideEl.find('.vts-carousel-slide-shadow-bottom');\r\n    if (shadowBefore.length === 0) {\r\n      shadowBefore = $(\r\n        `<div class=\"vts-carousel-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`\r\n      );\r\n      $slideEl.append(shadowBefore);\r\n    }\r\n    if (shadowAfter.length === 0) {\r\n      shadowAfter = $(\r\n        `<div class=\"vts-carousel-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`\r\n      );\r\n      $slideEl.append(shadowAfter);\r\n    }\r\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\r\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\r\n  };\r\n\r\n  const recreateShadows = () => {\r\n    // create new ones\r\n    const isHorizontal = carousel.isHorizontal();\r\n    carousel.slides.each(slideEl => {\r\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n      createSlideShadows($(slideEl), progress, isHorizontal);\r\n    });\r\n  };\r\n\r\n  const setTranslate = () => {\r\n    const {\r\n      $el,\r\n      $wrapperEl,\r\n      slides,\r\n      width: carouselWidth,\r\n      height: carouselHeight,\r\n      rtlTranslate: rtl,\r\n      size: carouselSize,\r\n      browser\r\n    } = carousel;\r\n    const params = carousel.params.cubeEffect;\r\n    const isHorizontal = carousel.isHorizontal();\r\n    const isVirtual = carousel.virtual && carousel.params.virtual.enabled;\r\n    let wrapperRotate = 0;\r\n    let $cubeShadowEl;\r\n    if (params.shadow) {\r\n      if (isHorizontal) {\r\n        $cubeShadowEl = $wrapperEl.find('.vts-carousel-cube-shadow');\r\n        if ($cubeShadowEl.length === 0) {\r\n          $cubeShadowEl = $('<div class=\"vts-carousel-cube-shadow\"></div>');\r\n          $wrapperEl.append($cubeShadowEl);\r\n        }\r\n        $cubeShadowEl.css({ height: `${carouselWidth}px` });\r\n      } else {\r\n        $cubeShadowEl = $el.find('.vts-carousel-cube-shadow');\r\n        if ($cubeShadowEl.length === 0) {\r\n          $cubeShadowEl = $('<div class=\"vts-carousel-cube-shadow\"></div>');\r\n          $el.append($cubeShadowEl);\r\n        }\r\n      }\r\n    }\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      const $slideEl = slides.eq(i);\r\n      let slideIndex = i;\r\n      if (isVirtual) {\r\n        slideIndex = parseInt($slideEl.attr('data-carousel-slide-index'), 10);\r\n      }\r\n      let slideAngle = slideIndex * 90;\r\n      let round = Math.floor(slideAngle / 360);\r\n      if (rtl) {\r\n        slideAngle = -slideAngle;\r\n        round = Math.floor(-slideAngle / 360);\r\n      }\r\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\r\n      let tx = 0;\r\n      let ty = 0;\r\n      let tz = 0;\r\n      if (slideIndex % 4 === 0) {\r\n        tx = -round * 4 * carouselSize;\r\n        tz = 0;\r\n      } else if ((slideIndex - 1) % 4 === 0) {\r\n        tx = 0;\r\n        tz = -round * 4 * carouselSize;\r\n      } else if ((slideIndex - 2) % 4 === 0) {\r\n        tx = carouselSize + round * 4 * carouselSize;\r\n        tz = carouselSize;\r\n      } else if ((slideIndex - 3) % 4 === 0) {\r\n        tx = -carouselSize;\r\n        tz = 3 * carouselSize + carouselSize * 4 * round;\r\n      }\r\n      if (rtl) {\r\n        tx = -tx;\r\n      }\r\n\r\n      if (!isHorizontal) {\r\n        ty = tx;\r\n        tx = 0;\r\n      }\r\n\r\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\r\n        isHorizontal ? slideAngle : 0\r\n      }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\r\n      if (progress <= 1 && progress > -1) {\r\n        wrapperRotate = slideIndex * 90 + progress * 90;\r\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\r\n      }\r\n      $slideEl.transform(transform);\r\n      if (params.slideShadows) {\r\n        createSlideShadows($slideEl, progress, isHorizontal);\r\n      }\r\n    }\r\n    $wrapperEl.css({\r\n      '-webkit-transform-origin': `50% 50% -${carouselSize / 2}px`,\r\n      'transform-origin': `50% 50% -${carouselSize / 2}px`\r\n    });\r\n\r\n    if (params.shadow) {\r\n      if (isHorizontal) {\r\n        $cubeShadowEl.transform(\r\n          `translate3d(0px, ${carouselWidth / 2 + params.shadowOffset}px, ${\r\n            -carouselWidth / 2\r\n          }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`\r\n        );\r\n      } else {\r\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\r\n        const multiplier =\r\n          1.5 -\r\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\r\n            Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\r\n        const scale1 = params.shadowScale;\r\n        const scale2 = params.shadowScale / multiplier;\r\n        const offset = params.shadowOffset;\r\n        $cubeShadowEl.transform(\r\n          `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${carouselHeight / 2 + offset}px, ${\r\n            -carouselHeight / 2 / scale2\r\n          }px) rotateX(-90deg)`\r\n        );\r\n      }\r\n    }\r\n    const zFactor = browser.isSafari || browser.isWebView ? -carouselSize / 2 : 0;\r\n    $wrapperEl.transform(\r\n      `translate3d(0px,0,${zFactor}px) rotateX(${\r\n        carousel.isHorizontal() ? 0 : wrapperRotate\r\n      }deg) rotateY(${carousel.isHorizontal() ? -wrapperRotate : 0}deg)`\r\n    );\r\n    $wrapperEl[0].style.setProperty('--carousel-cube-translate-z', `${zFactor}px`);\r\n  };\r\n  const setTransition = duration => {\r\n    const { $el, slides } = carousel;\r\n    slides\r\n      .transition(duration)\r\n      .find(\r\n        '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\r\n      )\r\n      .transition(duration);\r\n    if (carousel.params.cubeEffect.shadow && !carousel.isHorizontal()) {\r\n      $el.find('.vts-carousel-cube-shadow').transition(duration);\r\n    }\r\n  };\r\n\r\n  effectInit({\r\n    effect: 'cube',\r\n    carousel,\r\n    on,\r\n    setTranslate,\r\n    setTransition,\r\n    recreateShadows,\r\n    getEffectParams: () => carousel.params.cubeEffect,\r\n    perspective: () => true,\r\n    overwriteParams: () => ({\r\n      slidesPerView: 1,\r\n      slidesPerGroup: 1,\r\n      watchSlidesProgress: true,\r\n      resistanceRatio: 0,\r\n      spaceBetween: 0,\r\n      centeredSlides: false,\r\n      virtualTranslate: true\r\n    })\r\n  });\r\n}\r\n","//@ts-nocheck\r\nimport $ from './dom';\r\n\r\nexport default function createShadow(params, $slideEl, side) {\r\n  const shadowClass = `carousel-slide-shadow${side ? `-${side}` : ''}`;\r\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\r\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\r\n\r\n  if (!$shadowEl.length) {\r\n    $shadowEl = $(`<div class=\"vts-carousel-slide-shadow${side ? `-${side}` : ''}\"></div>`);\r\n    $shadowContainer.append($shadowEl);\r\n  }\r\n  return $shadowEl;\r\n}\r\n","//@ts-nocheck\r\nimport $ from '../../../shared/dom';\r\nimport createShadow from '../../../shared/create-shadow';\r\nimport effectInit from '../../../shared/effect-init';\r\nimport effectTarget from '../../../shared/effect-target';\r\nimport effectVirtualTransitionEnd from '../../../shared/effect-virtual-transition-end';\r\n\r\nexport default function EffectFlip({ carousel, extendParams, on }) {\r\n  extendParams({\r\n    flipEffect: {\r\n      slideShadows: true,\r\n      limitRotation: true,\r\n      transformEl: null\r\n    }\r\n  });\r\n\r\n  const createSlideShadows = ($slideEl, progress, params) => {\r\n    let shadowBefore = carousel.isHorizontal()\r\n      ? $slideEl.find('.vts-carousel-slide-shadow-left')\r\n      : $slideEl.find('.vts-carousel-slide-shadow-top');\r\n    let shadowAfter = carousel.isHorizontal()\r\n      ? $slideEl.find('.vts-carousel-slide-shadow-right')\r\n      : $slideEl.find('.vts-carousel-slide-shadow-bottom');\r\n    if (shadowBefore.length === 0) {\r\n      shadowBefore = createShadow(params, $slideEl, carousel.isHorizontal() ? 'left' : 'top');\r\n    }\r\n    if (shadowAfter.length === 0) {\r\n      shadowAfter = createShadow(params, $slideEl, carousel.isHorizontal() ? 'right' : 'bottom');\r\n    }\r\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\r\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\r\n  };\r\n\r\n  const recreateShadows = () => {\r\n    // Set shadows\r\n    const params = carousel.params.flipEffect;\r\n    carousel.slides.each(slideEl => {\r\n      const $slideEl = $(slideEl);\r\n      let progress = $slideEl[0].progress;\r\n      if (carousel.params.flipEffect.limitRotation) {\r\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\r\n      }\r\n      createSlideShadows($slideEl, progress, params);\r\n    });\r\n  };\r\n\r\n  const setTranslate = () => {\r\n    const { slides, rtlTranslate: rtl } = carousel;\r\n    const params = carousel.params.flipEffect;\r\n    for (let i = 0; i < slides.length; i += 1) {\r\n      const $slideEl = slides.eq(i);\r\n      let progress = $slideEl[0].progress;\r\n      if (carousel.params.flipEffect.limitRotation) {\r\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\r\n      }\r\n      const offset = $slideEl[0].carouselSlideOffset;\r\n      const rotate = -180 * progress;\r\n      let rotateY = rotate;\r\n      let rotateX = 0;\r\n      let tx = carousel.params.cssMode ? -offset - carousel.translate : -offset;\r\n      let ty = 0;\r\n      if (!carousel.isHorizontal()) {\r\n        ty = tx;\r\n        tx = 0;\r\n        rotateX = -rotateY;\r\n        rotateY = 0;\r\n      } else if (rtl) {\r\n        rotateY = -rotateY;\r\n      }\r\n\r\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\r\n\r\n      if (params.slideShadows) {\r\n        createSlideShadows($slideEl, progress, params);\r\n      }\r\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\r\n      const $targetEl = effectTarget(params, $slideEl);\r\n      $targetEl.transform(transform);\r\n    }\r\n  };\r\n\r\n  const setTransition = duration => {\r\n    const { transformEl } = carousel.params.flipEffect;\r\n    const $transitionElements = transformEl ? carousel.slides.find(transformEl) : carousel.slides;\r\n    $transitionElements\r\n      .transition(duration)\r\n      .find(\r\n        '.vts-carousel-slide-shadow-top, .carousel-slide-shadow-right, .carousel-slide-shadow-bottom, .carousel-slide-shadow-left'\r\n      )\r\n      .transition(duration);\r\n    effectVirtualTransitionEnd({ carousel, duration, transformEl });\r\n  };\r\n\r\n  effectInit({\r\n    effect: 'flip',\r\n    carousel,\r\n    on,\r\n    setTranslate,\r\n    setTransition,\r\n    recreateShadows,\r\n    getEffectParams: () => carousel.params.flipEffect,\r\n    perspective: () => true,\r\n    overwriteParams: () => ({\r\n      slidesPerView: 1,\r\n      slidesPerGroup: 1,\r\n      watchSlidesProgress: true,\r\n      spaceBetween: 0,\r\n      virtualTranslate: !carousel.params.cssMode\r\n    })\r\n  });\r\n}\r\n","import Carousel from './core/core';\r\nimport Virtual from './core/modules/virtual/virtual';\r\nimport Keyboard from './core/modules/keyboard/keyboard';\r\nimport Mousewheel from './core/modules/mousewheel/mousewheel';\r\nimport Navigation from './core/modules/navigation/navigation';\r\nimport Pagination from './core/modules/pagination/pagination';\r\nimport Scrollbar from './core/modules/scrollbar/scrollbar';\r\nimport Parallax from './core/modules/parallax/parallax';\r\nimport Zoom from './core/modules/zoom/zoom';\r\nimport Lazy from './core/modules/lazy/lazy';\r\nimport Controller from './core/modules/controller/controller';\r\nimport A11y from './core/modules/a11y/a11y';\r\nimport History from './core/modules/history/history';\r\nimport Hashnavigation from './core/modules/hash-navigation/hash-navigation';\r\nimport Autoplay from './core/modules/autoplay/autoplay';\r\nimport Thumbs from './core/modules/thumbs/thumbs';\r\nimport Freemode from './core/modules/free-mode/free-mode';\r\nimport Grid from './core/modules/grid/grid';\r\nimport Manipulation from './core/modules/manipulation/manipulation';\r\nimport Effectfade from './core/modules/effect-fade/effect-fade';\r\nimport Effectcube from './core/modules/effect-cube/effect-cube';\r\nimport Effectflip from './core/modules/effect-flip/effect-flip';\r\n// import Effectcoverflow from './core/modules/effect-coverflow/effect-coverflow';\r\n// import Effectcreative from './core/modules/effect-creative/effect-creative';\r\n// import Effectcards from './core/modules/effect-cards/effect-cards';\r\n\r\n// Carousel Class\r\nconst modules = [\r\n  Virtual,\r\n  Keyboard,\r\n  Mousewheel,\r\n  Navigation,\r\n  Pagination,\r\n  Scrollbar,\r\n  Parallax,\r\n  Zoom,\r\n  Lazy,\r\n  Controller,\r\n  A11y,\r\n  History,\r\n  Hashnavigation,\r\n  Autoplay,\r\n  Thumbs,\r\n  Freemode,\r\n  Grid,\r\n  Manipulation,\r\n  Effectfade,\r\n  Effectcube,\r\n  Effectflip\r\n  // Effectcoverflow,\r\n  // Effectcreative,\r\n  // Effectcards\r\n];\r\nCarousel.use(modules);\r\n\r\nexport default Carousel;\r\n","/* underscore in name -> watch for changes */\r\nexport const paramsList = [\r\n  'init',\r\n  'enabled',\r\n  'touchEventsTarget',\r\n  'initialSlide',\r\n  'vtsSpeed',\r\n  'cssMode',\r\n  'updateOnWindowResize',\r\n  'resizeObserver',\r\n  'nested',\r\n  'focusableElements',\r\n  '_width',\r\n  '_height',\r\n  'preventInteractionOnTransition',\r\n  'userAgent',\r\n  'url',\r\n  '_freeMode',\r\n  '_autoHeight',\r\n  'setWrapperSize',\r\n  'virtualTranslate',\r\n\r\n  'vtsEffect',\r\n  'vtsDirection',\r\n  'vtsEdgeSwipeDetection',\r\n  'vtsEdgeSwipeThreshold',\r\n  'vtsBreakpoints',\r\n  'vtsSpaceBetween',\r\n  'vtsSlidesPerView',\r\n  'vtsLoop',\r\n  'vtsLoopAdditionalSlides',\r\n  'vtsLoopedSlides',\r\n  'vtsAllowSlidePrev',\r\n  'vtsAllowSlideNext',\r\n\r\n  'maxBackfaceHiddenSlides',\r\n  '_grid',\r\n  '_slidesPerGroup',\r\n  '_slidesPerGroupSkip',\r\n  '_slidesPerGroupAuto',\r\n  '_centeredSlides',\r\n  '_centeredSlidesBounds',\r\n  '_slidesOffsetBefore',\r\n  '_slidesOffsetAfter',\r\n  'normalizeSlideIndex',\r\n  '_centerInsufficientSlides',\r\n  '_watchOverflow',\r\n  'roundLengths',\r\n  'touchRatio',\r\n  'touchAngle',\r\n  'simulateTouch',\r\n  '_shortSwipes',\r\n  '_longSwipes',\r\n  'longSwipesRatio',\r\n  'longSwipesMs',\r\n  '_followFinger',\r\n  'allowTouchMove',\r\n  '_threshold',\r\n  'touchMoveStopPropagation',\r\n  'touchStartPreventDefault',\r\n  'touchStartForcePreventDefault',\r\n  'touchReleaseOnEdges',\r\n  'uniqueNavElements',\r\n  '_resistance',\r\n  '_resistanceRatio',\r\n  '_watchSlidesProgress',\r\n  '_grabCursor',\r\n  'preventClicks',\r\n  'preventClicksPropagation',\r\n  '_slideToClickedSlide',\r\n  '_preloadImages',\r\n  'updateOnImagesReady',\r\n\r\n  '_loopedSlidesLimit',\r\n  '_loopFillGroupWithBlank',\r\n  'loopPreventsSlide',\r\n  '_rewind',\r\n\r\n  '_swipeHandler',\r\n  '_noSwiping',\r\n  'noSwipingClass',\r\n  'noSwipingSelector',\r\n  'passiveListeners',\r\n  'containerModifierClass',\r\n  'vtsSlideClass',\r\n  'slideBlankClass',\r\n  'slideActiveClass',\r\n  'vtsSlideDuplicateClass',\r\n  'slideVisibleClass',\r\n  'slideDuplicateClass',\r\n  'slideNextClass',\r\n  'slideDuplicateNextClass',\r\n  'slidePrevClass',\r\n  'slideDuplicatePrevClass',\r\n  'vtsWrapperClass',\r\n  'runCallbacksOnInit',\r\n  'observer',\r\n  'observeParents',\r\n  'observeSlideChildren',\r\n\r\n  // modules\r\n  'a11y',\r\n  'vtsAutoplay',\r\n  'vtsController',\r\n  'coverflowEffect',\r\n  'cubeEffect',\r\n  'fadeEffect',\r\n  'flipEffect',\r\n  'creativeEffect',\r\n  'cardsEffect',\r\n  'hashNavigation',\r\n  'history',\r\n  'keyboard',\r\n  'lazy',\r\n  'mousewheel',\r\n  '_vtsNavigation',\r\n  '_vtsPagination',\r\n  'parallax',\r\n  '_vtsScrollbar',\r\n  'vtsThumbs',\r\n  '_vtsVirtual',\r\n  'zoom',\r\n  'on'\r\n];\r\n","export function isObject(o: any): boolean {\r\n  return (\r\n    typeof o === 'object' &&\r\n    o !== null &&\r\n    o.constructor &&\r\n    Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n  );\r\n}\r\n\r\nexport function isEnabled(val: boolean | { enabled?: boolean }) {\r\n  return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\r\n}\r\n\r\nexport function isShowEl(val: any, obj: any, el: any): boolean {\r\n  return (\r\n    (coerceBooleanProperty(val) === true && obj && !obj.el) ||\r\n    !(\r\n      typeof obj !== 'boolean' &&\r\n      obj.el !== el?.nativeElement &&\r\n      (typeof obj.el === 'string' || typeof obj.el === 'object')\r\n    )\r\n  );\r\n}\r\n\r\nexport function extend(target: any, src: any) {\r\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\r\n  Object.keys(src)\r\n    .filter(key => noExtend.indexOf(key) < 0)\r\n    .forEach(key => {\r\n      if (typeof target[key] === 'undefined') {\r\n        target[key] = src[key];\r\n        return;\r\n      }\r\n      if (\r\n        typeof target[key] !== 'boolean' &&\r\n        typeof target[key] !== 'function' &&\r\n        typeof target[key] !== 'object' &&\r\n        target[key] &&\r\n        !src[key]\r\n      ) {\r\n        return;\r\n      }\r\n      if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\r\n        if (src[key].__carousel__) target[key] = src[key];\r\n        else extend(target[key], src[key]);\r\n      } else {\r\n        target[key] = src[key];\r\n      }\r\n    });\r\n}\r\n\r\nexport function coerceBooleanProperty(value: any): boolean {\r\n  return value != null && `${value}` !== 'false';\r\n}\r\n\r\nexport const ignoreNgOnChanges = ['vtsScrollbar', 'vtsVirtual'];\r\n\r\nexport function setProperty(val: any, obj = {}): {} | false {\r\n  if (isObject(val)) {\r\n    return val;\r\n  }\r\n\r\n  if (coerceBooleanProperty(val) === true) {\r\n    return obj;\r\n  }\r\n\r\n  return false;\r\n}\r\n","import { camelCase } from '@vts-voffice/ng-vts/core/util';\r\nimport Carousel from '../carousel';\r\nimport { paramsList } from './params-list';\r\nimport { extend, isObject } from './utils';\r\ntype KeyValueType = { [x: string]: any };\r\n\r\nexport const allowedParams = paramsList;\r\nexport const getKey = (key: string) => camelCase(key.replace(/^_/, '').replace(/^vts/, ''));\r\n\r\nexport function getParams(obj: any = {}) {\r\n  const params: any = {\r\n    on: {}\r\n  };\r\n  // const events = {};\r\n  const passedParams: KeyValueType = {};\r\n  extend(params, Carousel.defaults);\r\n  extend(params, Carousel.extendedDefaults);\r\n  params._emitClasses = true;\r\n  params.init = false;\r\n\r\n  const rest: KeyValueType = {};\r\n  Object.keys(obj).forEach((key: string) => {\r\n    if (allowedParams.indexOf(key) >= 0) {\r\n      const _key = getKey(key);\r\n      if (isObject(obj[key])) {\r\n        params[_key] = {};\r\n        passedParams[_key] = {};\r\n        extend(params[_key], obj[key]);\r\n        extend(passedParams[_key], obj[key]);\r\n      } else {\r\n        params[_key] = obj[key];\r\n        passedParams[_key] = obj[key];\r\n      }\r\n    } else {\r\n      rest[key] = obj[key];\r\n    }\r\n  });\r\n  ['navigation', 'pagination', 'scrollbar'].forEach(key => {\r\n    if (params[key] === true) params[key] = {};\r\n    if (params[key] === false) delete params[key];\r\n  });\r\n\r\n  return { params, passedParams, rest };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\nimport { coerceBooleanProperty } from './lib/utils/utils';\r\n@Directive({\r\n  selector: 'ng-template[vtsCarouselSlide]'\r\n})\r\nexport class VtsCarouselSlideDirective {\r\n  @Input() virtualIndex: number = 0;\r\n  @Input() class: string = '';\r\n  @Input()\r\n  set ngClass(val: string) {\r\n    this.class = [this.class || '', val].join(' ');\r\n  }\r\n  @Input('data-carousel-autoplay') autoplayDelay: string | null = null;\r\n  @Input()\r\n  set zoom(val: boolean) {\r\n    this._zoom = coerceBooleanProperty(val);\r\n  }\r\n  get zoom() {\r\n    return this._zoom;\r\n  }\r\n  private _zoom: boolean = false;\r\n  slideIndex: number = 1;\r\n  get classNames() {\r\n    return this._classNames;\r\n  }\r\n  set classNames(val) {\r\n    if (this._classNames === val) {\r\n      return;\r\n    }\r\n    this._classNames = val;\r\n    this.slideData = {\r\n      isActive: this._hasClass([\r\n        'vts-carousel-slide-active',\r\n        'vts-carousel-slide-duplicate-active'\r\n      ]),\r\n      isVisible: this._hasClass(['vts-carousel-slide-visible']),\r\n      isDuplicate: this._hasClass(['vts-carousel-slide-duplicate']),\r\n      isPrev: this._hasClass(['vts-carousel-slide-prev', 'vts-carousel-slide-duplicate-prev']),\r\n      isNext: this._hasClass(['vts-carousel-slide-next', 'vts-carousel-slide-duplicate-next'])\r\n    };\r\n  }\r\n\r\n  private _hasClass(classNames: string[]) {\r\n    return classNames.some(className => this._classNames.indexOf(className) >= 0);\r\n  }\r\n  slideData = {\r\n    isActive: false,\r\n    isPrev: false,\r\n    isNext: false,\r\n    isVisible: false,\r\n    isDuplicate: false\r\n  };\r\n\r\n  private _classNames: string = '';\r\n  constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { CarouselEvents } from '../types/carousel-events';\r\n\r\nexport type IEventMappers = {\r\n  activeIndexChange: (args: Parameters<CarouselEvents['activeIndexChange']>) => number;\r\n  slidesLengthChange: (args: Parameters<CarouselEvents['slidesLengthChange']>) => number;\r\n};\r\n\r\nexport const EventMappers: IEventMappers = {\r\n  activeIndexChange: ([c]) => c.realIndex,\r\n  slidesLengthChange: ([c]) => c.slides.length\r\n};\r\n","import { Component, ElementRef, ViewEncapsulation, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'vts-carousel-pagination,[vts-carousel-pagination]',\r\n  encapsulation: ViewEncapsulation.None,\r\n  exportAs: 'vtsCarouselPagination',\r\n  template: '<ng-content></ng-content>'\r\n})\r\nexport class VtsCarouselPaginationComponent implements OnInit {\r\n  constructor(public elementRef: ElementRef) {}\r\n\r\n  ngOnInit(): void {}\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnInit,\r\n  Output,\r\n  PLATFORM_ID,\r\n  QueryList,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  ContentChild\r\n} from '@angular/core';\r\nimport Carousel from './lib/carousel';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { getParams } from './lib/utils/get-params';\r\nimport { VtsCarouselSlideDirective } from './carousel-slide.directive';\r\nimport { EventsParams } from './carousel-events';\r\nimport {\r\n  extend,\r\n  isObject,\r\n  setProperty,\r\n  ignoreNgOnChanges,\r\n  coerceBooleanProperty,\r\n  isShowEl,\r\n  isEnabled\r\n} from './lib/utils/utils';\r\nimport {\r\n  CarouselOptions as VtsCarouselOptions,\r\n  CarouselEvents as VtsCarouselEvents,\r\n  NavigationOptions as VtsCarouselNavigationOptions,\r\n  PaginationOptions as VtsCarouselPaginationOptions,\r\n  ScrollbarOptions as VtsCarouselScrollbarOptions,\r\n  VirtualOptions as VtsCarouselVirtualOptions,\r\n  ControllerOptions as VtsCarouselControllerOptions,\r\n  ThumbsOptions as VtsCarouselThumbsOptions,\r\n  AutoplayOptions as VtsCarouselAutoplayOptions,\r\n  ICarousel\r\n} from './lib/types';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { camelCase, upperFirst } from '@vts-voffice/ng-vts/core/util';\r\nimport { EventMappers } from './lib/utils/events';\r\nimport { VtsCarouselPaginationComponent } from './carousel-pagination.component';\r\nimport { VtsDestroyService } from '@vts-voffice/ng-vts/core/services';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'vts-carousel',\r\n  templateUrl: './carousel.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  exportAs: 'vtsCarousel',\r\n  providers: [VtsDestroyService]\r\n})\r\nexport class VtsCarouselComponent implements OnInit {\r\n  // @Input() enabled?: boolean;\r\n  // @Input() on?: \"on\";\r\n  // @Input() touchEventsTarget: \"touchEventsTarget\";\r\n  // @Input() initialSlide: \"initialSlide\";\r\n  // @Input() cssMode: \"cssMode\";\r\n  // @Input() updateOnWindowResize: \"updateOnWindowResize\";\r\n  // @Input() resizeObserver: \"resizeObserver\";\r\n  // @Input() nested: \"nested\";\r\n  // @Input() focusableElements: \"focusableElements\";\r\n  // @Input() width: \"width\";\r\n  // @Input() height: \"height\";\r\n  // @Input() preventInteractionOnTransition: \"preventInteractionOnTransition\";\r\n  // @Input() userAgent: \"userAgent\";\r\n  // @Input() url: \"url\";\r\n  // @Input() freeMode: \"freeMode\";\r\n  // @Input() autoHeight: \"autoHeight\";\r\n  // @Input() setWrapperSize: \"setWrapperSize\";\r\n  // @Input() virtualTranslate: \"virtualTranslate\";\r\n  // @Input() maxBackfaceHiddenSlides: \"maxBackfaceHiddenSlides\";\r\n  // @Input() grid: \"grid\";\r\n  // @Input() slidesPerGroup: \"slidesPerGroup\";\r\n  // @Input() slidesPerGroupSkip: \"slidesPerGroupSkip\";\r\n  // @Input() centeredSlides: \"centeredSlides\";\r\n  // @Input() centeredSlidesBounds: \"centeredSlidesBounds\";\r\n  // @Input() slidesOffsetBefore: \"slidesOffsetBefore\";\r\n  // @Input() slidesOffsetAfter: \"slidesOffsetAfter\";\r\n  // @Input() normalizeSlideIndex: \"normalizeSlideIndex\";\r\n  // @Input() centerInsufficientSlides: \"centerInsufficientSlides\";\r\n  // @Input() watchOverflow: \"watchOverflow\";\r\n  // @Input() roundLengths: \"roundLengths\";\r\n  // @Input() touchRatio: \"touchRatio\";\r\n  // @Input() touchAngle: \"touchAngle\";\r\n  // @Input() simulateTouch: \"simulateTouch\";\r\n  // @Input() shortSwipes: \"shortSwipes\";\r\n  // @Input() longSwipes: \"longSwipes\";\r\n  // @Input() longSwipesRatio: \"longSwipesRatio\";\r\n  // @Input() longSwipesMs: \"longSwipesMs\";\r\n  // @Input() followFinger: \"followFinger\";\r\n  // @Input() allowTouchMove: \"allowTouchMove\";\r\n  // @Input() threshold: \"threshold\";\r\n  // @Input() touchMoveStopPropagation: \"touchMoveStopPropagation\";\r\n  // @Input() touchStartPreventDefault: \"touchStartPreventDefault\";\r\n  // @Input() touchStartForcePreventDefault: \"touchStartForcePreventDefault\";\r\n  // @Input() touchReleaseOnEdges: \"touchReleaseOnEdges\";\r\n  // @Input() uniqueNavElements: \"uniqueNavElements\";\r\n  // @Input() resistance: \"resistance\";\r\n  // @Input() resistanceRatio: \"resistanceRatio\";\r\n  // @Input() watchSlidesProgress: \"watchSlidesProgress\";\r\n  // @Input() grabCursor: \"grabCursor\";\r\n  // @Input() preventClicks: \"preventClicks\";\r\n  // @Input() preventClicksPropagation: \"preventClicksPropagation\";\r\n  // @Input() slideToClickedSlide: \"slideToClickedSlide\";\r\n  // @Input() preloadImages: \"preloadImages\";\r\n  // @Input() updateOnImagesReady: \"updateOnImagesReady\";\r\n  // @Input() loopedSlidesLimit: \"loopedSlidesLimit\";\r\n  // @Input() loopFillGroupWithBlank: \"loopFillGroupWithBlank\";\r\n  // @Input() loopPreventsSlide: \"loopPreventsSlide\";\r\n  // @Input() rewind: \"rewind\";\r\n  // @Input() swipeHandler: \"swipeHandler\";\r\n  // @Input() noSwiping: \"noSwiping\";\r\n  // @Input() noSwipingClass: \"noSwipingClass\";\r\n  // @Input() noSwipingSelector: \"noSwipingSelector\";\r\n  // @Input() passiveListeners: \"passiveListeners\";\r\n  // @Input() containerModifierClass: \"containerModifierClass\";\r\n  // @Input() slideBlankClass: \"slideBlankClass\";\r\n  // @Input() slideActiveClass: \"slideActiveClass\";\r\n  // @Input() slideDuplicateActiveClass: \"slideDuplicateActiveClass\";\r\n  // @Input() slideVisibleClass: \"slideVisibleClass\";\r\n  // @Input() slideNextClass: \"slideNextClass\";\r\n  // @Input() slideDuplicateNextClass: \"slideDuplicateNextClass\";\r\n  // @Input() slidePrevClass: \"slidePrevClass\";\r\n  // @Input() slideDuplicatePrevClass: \"slideDuplicatePrevClass\";\r\n  // @Input() runCallbacksOnInit: \"runCallbacksOnInit\";\r\n  // @Input() observeParents: \"observeParents\";\r\n  // @Input() observeSlideChildren: \"observeSlideChildren\";\r\n  // @Input() a11y: \"a11y\";\r\n  // @Input() coverflowEffect: \"coverflowEffect\";\r\n  // @Input() cubeEffect: \"cubeEffect\";\r\n  // @Input() fadeEffect: \"fadeEffect\";\r\n  // @Input() flipEffect: \"flipEffect\";\r\n  // @Input() creativeEffect: \"creativeEffect\";\r\n  // @Input() cardsEffect: \"cardsEffect\";\r\n  // @Input() hashNavigation: \"hashNavigation\";\r\n  // @Input() history: \"history\";\r\n  // @Input() keyboard: \"keyboard\";\r\n  // @Input() lazy: \"lazy\";\r\n  // @Input() mousewheel: \"mousewheel\";\r\n  // @Input() parallax: \"parallax\";\r\n  // @Input() zoom: \"zoom\";\r\n\r\n  @Input() vtsInitialSlide?: number = 0;\r\n  @Input() vtsDirection?: VtsCarouselOptions['direction'] = 'horizontal';\r\n  @Input() vtsSpeed?: number;\r\n  @Input() vtsEdgeSwipeDetection: boolean | string = '';\r\n  @Input() vtsEdgeSwipeThreshold: number = 1;\r\n  @Input() vtsBreakpoints?: VtsCarouselBreakpointOptions;\r\n  @Input() vtsSpaceBetween?: number;\r\n  @Input() vtsSlidesPerView?: number | 'auto';\r\n  @Input() vtsLoop?: boolean;\r\n  vtsLoopAdditionalSlides?: number;\r\n  vtsLoopedSlides?: number | null;\r\n  @Input() vtsAllowSlidePrev?: boolean;\r\n  @Input() vtsAllowSlideNext?: boolean;\r\n  @Input() vtsSlideClass?: string = 'vts-carousel-slide';\r\n  @Input() vtsSlideDuplicateClass: string = 'slideDuplicateClass';\r\n  @Input() vtsWrapperClass: string = 'vts-carousel-wrapper';\r\n  @Input() vtsAutoplay?: VtsCarouselAutoplayOptions | boolean | '';\r\n  @Input() vtsController?: VtsCarouselControllerOptions;\r\n  @Input() vtsThumbs?: VtsCarouselThumbsOptions;\r\n  @Input() vtsEffect?: VtsCarouselOptions['effect'] = 'slide';\r\n\r\n  @Input() class: string = '';\r\n  @Input() id: string = '';\r\n  @Input()\r\n  set vtsNavigation(val) {\r\n    const currentNext =\r\n      typeof this._vtsNavigation !== 'boolean' && this._vtsNavigation !== ''\r\n        ? this._vtsNavigation?.nextEl\r\n        : null;\r\n    const currentPrev =\r\n      typeof this._vtsNavigation !== 'boolean' && this._vtsNavigation !== ''\r\n        ? this._vtsNavigation?.prevEl\r\n        : null;\r\n\r\n    const newVal: typeof this._vtsNavigation = setProperty(val, {\r\n      enabled: true,\r\n      nextEl: currentNext || null,\r\n      prevEl: currentPrev || null\r\n    }) as VtsCarouselNavigationOptions;\r\n\r\n    // Set default\r\n    newVal.nextEl = newVal.nextEl || this._nextElRef?.nativeElement;\r\n    newVal.prevEl = newVal.prevEl || this._prevElRef?.nativeElement;\r\n\r\n    this._vtsNavigation = newVal;\r\n\r\n    this.showNextNavigation = !(\r\n      coerceBooleanProperty(val) !== true ||\r\n      (this._vtsNavigation &&\r\n        typeof this._vtsNavigation !== 'boolean' &&\r\n        this._vtsNavigation.nextEl !== null &&\r\n        this._vtsNavigation.nextEl !== this._nextElRef?.nativeElement &&\r\n        (typeof this._vtsNavigation.nextEl === 'string' ||\r\n          typeof this._vtsNavigation.nextEl === 'object'))\r\n    );\r\n\r\n    this.showPrevNavigation = !(\r\n      coerceBooleanProperty(val) !== true ||\r\n      (this._vtsNavigation &&\r\n        typeof this._vtsNavigation !== 'boolean' &&\r\n        this._vtsNavigation.prevEl !== null &&\r\n        this._vtsNavigation.prevEl !== this._prevElRef?.nativeElement &&\r\n        (typeof this._vtsNavigation.prevEl === 'string' ||\r\n          typeof this._vtsNavigation.prevEl === 'object'))\r\n    );\r\n  }\r\n  get vtsNavigation() {\r\n    return this._vtsNavigation;\r\n  }\r\n  private _vtsNavigation: VtsCarouselNavigationOptions | boolean | '';\r\n  showNextNavigation: boolean = true;\r\n  showPrevNavigation: boolean = true;\r\n\r\n  // #region \"Pagination\"\r\n\r\n  _paginationElRef!: ElementRef;\r\n  _useCustomPagination: boolean = false;\r\n\r\n  // Default pagination\r\n  @ViewChild('vtsPaginationElRef', { static: false, read: ElementRef })\r\n  set paginationElRef(el: ElementRef) {\r\n    this._paginationElRef = el;\r\n    this._setElement(el, this.vtsPagination, 'vtsPagination');\r\n  }\r\n\r\n  // Custom pagination\r\n  @ContentChild(VtsCarouselPaginationComponent, { static: false })\r\n  set customPaginationRef(custom: VtsCarouselPaginationComponent) {\r\n    if (custom) {\r\n      this._useCustomPagination = true;\r\n      this._paginationElRef = custom.elementRef;\r\n      this._setElement(custom.elementRef, this.vtsPagination, 'vtsPagination');\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set vtsPagination(val) {\r\n    const current = this._paginationElRef;\r\n    this._vtsPagination = setProperty(val, {\r\n      enabled: true,\r\n      el: current || null\r\n    });\r\n    if (typeof this._vtsPagination === 'object') {\r\n      this._vtsPagination.type = this._useCustomPagination ? 'custom' : 'bullets';\r\n    }\r\n    this.showPagination = !(\r\n      coerceBooleanProperty(this._vtsPagination) !== true ||\r\n      (typeof this._vtsPagination === 'object' && this._vtsPagination.enabled === false)\r\n    );\r\n    if (current) {\r\n      this._setElement(current, this.vtsPagination, 'vtsPagination');\r\n    }\r\n  }\r\n  get vtsPagination() {\r\n    return this._vtsPagination;\r\n  }\r\n  private _vtsPagination: VtsCarouselPaginationOptions | boolean | '';\r\n  showPagination: boolean = true;\r\n  //#endregion\r\n\r\n  @Input()\r\n  set vtsScrollbar(val) {\r\n    const current =\r\n      typeof this._vtsScrollbar !== 'boolean' && this._vtsScrollbar !== ''\r\n        ? this._vtsScrollbar?.el\r\n        : null;\r\n    this._vtsScrollbar = setProperty(val, {\r\n      enabled: true,\r\n      el: current || null\r\n    });\r\n    this.showScrollbar = isShowEl(val, this._vtsScrollbar, this._vtsScrollbarElRef);\r\n  }\r\n  get vtsScrollbar() {\r\n    return this._vtsScrollbar;\r\n  }\r\n  private _vtsScrollbar: VtsCarouselScrollbarOptions | boolean | '';\r\n  showScrollbar: boolean = true;\r\n\r\n  @Input()\r\n  set virtual(val) {\r\n    this._vtsVirtual = setProperty(val, {\r\n      enabled: true\r\n    });\r\n  }\r\n  get virtual() {\r\n    return this._vtsVirtual;\r\n  }\r\n  private _vtsVirtual: VtsCarouselVirtualOptions | boolean | '';\r\n\r\n  @Input()\r\n  set config(val: VtsCarouselOptions) {\r\n    this.updateCarousel(val);\r\n    const { params } = getParams(val);\r\n    this.setSelfParams(params);\r\n  }\r\n\r\n  //#region Public\r\n\r\n  @Output() vtsAfterInit = new EventEmitter<EventsParams['afterInit']>();\r\n\r\n  @Output() vtsAutoplayChange = new EventEmitter<EventsParams['autoplay']>();\r\n\r\n  @Output() vtsAutoplayStart = new EventEmitter<EventsParams['autoplayStart']>();\r\n\r\n  @Output() vtsAutoplayStop = new EventEmitter<EventsParams['autoplayStop']>();\r\n\r\n  @Output() vtsAutoplayPause = new EventEmitter<EventsParams['autoplayPause']>();\r\n\r\n  @Output() vtsAutoplayResume = new EventEmitter<EventsParams['autoplayResume']>();\r\n\r\n  @Output() vtsBeforeDestroy = new EventEmitter<EventsParams['beforeDestroy']>();\r\n\r\n  @Output() vtsBeforeInit = new EventEmitter<EventsParams['beforeInit']>();\r\n\r\n  @Output() vtsBeforeLoopFix = new EventEmitter<EventsParams['beforeLoopFix']>();\r\n\r\n  @Output() vtsBeforeResize = new EventEmitter<EventsParams['beforeResize']>();\r\n\r\n  @Output() vtsBeforeSlideChangeStart = new EventEmitter<EventsParams['beforeSlideChangeStart']>();\r\n\r\n  @Output() vtsBeforeTransitionStart = new EventEmitter<EventsParams['beforeTransitionStart']>();\r\n\r\n  @Output() vtsBreakpoint = new EventEmitter<EventsParams['breakpoint']>();\r\n\r\n  @Output() vtsChangeDirection = new EventEmitter<EventsParams['changeDirection']>();\r\n\r\n  @Output() vtsClick = new EventEmitter<EventsParams['click']>();\r\n\r\n  @Output() vtsDoubleTap = new EventEmitter<EventsParams['doubleTap']>();\r\n\r\n  @Output() vtsDoubleClick = new EventEmitter<EventsParams['doubleClick']>();\r\n\r\n  @Output() vtsDestroy = new EventEmitter<EventsParams['destroy']>();\r\n\r\n  @Output() vtsFromEdge = new EventEmitter<EventsParams['fromEdge']>();\r\n\r\n  @Output() vtsHashChange = new EventEmitter<EventsParams['hashChange']>();\r\n\r\n  @Output() vtsHashSet = new EventEmitter<EventsParams['hashSet']>();\r\n\r\n  @Output() vtsImagesReady = new EventEmitter<EventsParams['imagesReady']>();\r\n\r\n  @Output() vtsInited = new EventEmitter<EventsParams['init']>();\r\n\r\n  @Output() vtsKeyPress = new EventEmitter<EventsParams['keyPress']>();\r\n\r\n  @Output() vtsLazyImageLoad = new EventEmitter<EventsParams['lazyImageLoad']>();\r\n\r\n  @Output() vtsLazyImageReady = new EventEmitter<EventsParams['lazyImageReady']>();\r\n\r\n  @Output() vtsLoopFix = new EventEmitter<EventsParams['loopFix']>();\r\n\r\n  @Output() vtsMomentumBounce = new EventEmitter<EventsParams['momentumBounce']>();\r\n\r\n  @Output() vtsNavigationHide = new EventEmitter<EventsParams['navigationHide']>();\r\n\r\n  @Output() vtsNavigationShow = new EventEmitter<EventsParams['navigationShow']>();\r\n\r\n  @Output() vtsNavigationPrev = new EventEmitter<EventsParams['navigationPrev']>();\r\n\r\n  @Output() vtsNavigationNext = new EventEmitter<EventsParams['navigationNext']>();\r\n\r\n  @Output() vtsObserverUpdate = new EventEmitter<EventsParams['observerUpdate']>();\r\n\r\n  @Output() vtsOrientationchange = new EventEmitter<EventsParams['orientationchange']>();\r\n\r\n  @Output() vtsPaginationHide = new EventEmitter<EventsParams['paginationHide']>();\r\n\r\n  @Output() vtsPaginationRender = new EventEmitter<EventsParams['paginationRender']>();\r\n\r\n  @Output() vtsPaginationShow = new EventEmitter<EventsParams['paginationShow']>();\r\n\r\n  @Output() vtsPaginationUpdate = new EventEmitter<EventsParams['paginationUpdate']>();\r\n\r\n  @Output() vtsProgress = new EventEmitter<EventsParams['progress']>();\r\n\r\n  @Output() vtsReachBeginning = new EventEmitter<EventsParams['reachBeginning']>();\r\n\r\n  @Output() vtsReachEnd = new EventEmitter<EventsParams['reachEnd']>();\r\n\r\n  @Output() vtsResize = new EventEmitter<EventsParams['resize']>();\r\n\r\n  @Output() vtsScroll = new EventEmitter<EventsParams['scroll']>();\r\n\r\n  @Output() vtsScrollbarDragEnd = new EventEmitter<EventsParams['scrollbarDragEnd']>();\r\n\r\n  @Output() vtsScrollbarDragMove = new EventEmitter<EventsParams['scrollbarDragMove']>();\r\n\r\n  @Output() vtsScrollbarDragStart = new EventEmitter<EventsParams['scrollbarDragStart']>();\r\n\r\n  @Output() vtsSetTransition = new EventEmitter<EventsParams['setTransition']>();\r\n\r\n  @Output() vtsSetTranslate = new EventEmitter<EventsParams['setTranslate']>();\r\n\r\n  @Output() vtsSlideChange = new EventEmitter<EventsParams['slideChange']>();\r\n\r\n  @Output() vtsSlideChangeTransitionEnd = new EventEmitter<\r\n    EventsParams['slideChangeTransitionEnd']\r\n  >();\r\n\r\n  @Output() vtsSlideChangeTransitionStart = new EventEmitter<\r\n    EventsParams['slideChangeTransitionStart']\r\n  >();\r\n\r\n  @Output() vtsSlideNextTransitionEnd = new EventEmitter<EventsParams['slideNextTransitionEnd']>();\r\n\r\n  @Output() vtsSlideNextTransitionStart = new EventEmitter<\r\n    EventsParams['slideNextTransitionStart']\r\n  >();\r\n\r\n  @Output() vtsSlidePrevTransitionEnd = new EventEmitter<EventsParams['slidePrevTransitionEnd']>();\r\n\r\n  @Output() vtsSlidePrevTransitionStart = new EventEmitter<\r\n    EventsParams['slidePrevTransitionStart']\r\n  >();\r\n\r\n  @Output() vtsSlideResetTransitionStart = new EventEmitter<\r\n    EventsParams['slideResetTransitionStart']\r\n  >();\r\n\r\n  @Output() vtsSlideResetTransitionEnd = new EventEmitter<\r\n    EventsParams['slideResetTransitionEnd']\r\n  >();\r\n\r\n  @Output() vtsSliderMove = new EventEmitter<EventsParams['sliderMove']>();\r\n\r\n  @Output() sliderFirstMove = new EventEmitter<EventsParams['sliderFirstMove']>();\r\n\r\n  @Output() vtsSlidesGridLengthChange = new EventEmitter<EventsParams['slidesGridLengthChange']>();\r\n\r\n  @Output() vtsSnapGridLengthChange = new EventEmitter<EventsParams['snapGridLengthChange']>();\r\n\r\n  @Output() vtsSnapIndexChange = new EventEmitter<EventsParams['snapIndexChange']>();\r\n\r\n  @Output() vtsTap = new EventEmitter<EventsParams['tap']>();\r\n\r\n  @Output() vtsToEdge = new EventEmitter<EventsParams['toEdge']>();\r\n\r\n  @Output() vtsTouchEnd = new EventEmitter<EventsParams['touchEnd']>();\r\n\r\n  @Output() vtsTouchMove = new EventEmitter<EventsParams['touchMove']>();\r\n\r\n  @Output() vtsTouchMoveOpposite = new EventEmitter<EventsParams['touchMoveOpposite']>();\r\n\r\n  @Output() vtsTouchStart = new EventEmitter<EventsParams['touchStart']>();\r\n\r\n  @Output() vtsTransitionEnd = new EventEmitter<EventsParams['transitionEnd']>();\r\n\r\n  @Output() vtsTransitionStart = new EventEmitter<EventsParams['transitionStart']>();\r\n\r\n  @Output() vtsUpdate = new EventEmitter<EventsParams['update']>();\r\n\r\n  @Output() vtsZoomChange = new EventEmitter<EventsParams['zoomChange']>();\r\n\r\n  @Output() vtsCarousel = new EventEmitter<any>();\r\n\r\n  @Output() vtsLock = new EventEmitter<EventsParams['lock']>();\r\n\r\n  @Output() vtsUnlock = new EventEmitter<EventsParams['unlock']>();\r\n\r\n  @Output() vtsActiveIndexChange = new EventEmitter<number>();\r\n\r\n  @Output() vtsSlidesLengthChange = new EventEmitter<number>();\r\n\r\n  // vtsActiveIndexChange emit real index instead of this\r\n  // @Output() vtsRealIndexChange = new EventEmitter<number>();\r\n\r\n  // Public properties\r\n\r\n  //#endregion\r\n\r\n  @ViewChild('vtsPrevElRef', { static: false })\r\n  set prevElRef(el: ElementRef) {\r\n    this._prevElRef = el;\r\n    this._setElement(el, this.vtsNavigation, 'vtsNavigation', 'prevEl');\r\n  }\r\n  _prevElRef!: ElementRef;\r\n  @ViewChild('vtsNextElRef', { static: false })\r\n  set nextElRef(el: ElementRef) {\r\n    this._nextElRef = el;\r\n    this._setElement(el, this.vtsNavigation, 'vtsNavigation', 'nextEl');\r\n  }\r\n  _nextElRef!: ElementRef;\r\n  @ViewChild('vtsScrollbarElRef', { static: false })\r\n  set scrollbarElRef(el: ElementRef) {\r\n    this._vtsScrollbarElRef = el;\r\n    this._setElement(el, this.vtsScrollbar, 'vtsScrollbar');\r\n  }\r\n  _vtsScrollbarElRef!: ElementRef;\r\n\r\n  @ContentChildren(VtsCarouselSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\r\n  slidesEl!: QueryList<VtsCarouselSlideDirective>;\r\n  private slides!: VtsCarouselSlideDirective[];\r\n\r\n  prependSlides!: Observable<VtsCarouselSlideDirective[]>;\r\n  appendSlides!: Observable<VtsCarouselSlideDirective[]>;\r\n\r\n  carouselRef?: ICarousel;\r\n  readonly _activeSlides = new Subject<VtsCarouselSlideDirective[]>();\r\n\r\n  get activeSlides() {\r\n    if (this.virtual) {\r\n      return this._activeSlides;\r\n    }\r\n    return of(this.slides);\r\n  }\r\n\r\n  get zoomContainerClass() {\r\n    return 'vts-carousel-zoom-container';\r\n  }\r\n\r\n  @HostBinding('class') containerClasses: string = 'vts-carousel';\r\n  constructor(\r\n    private _ngZone: NgZone,\r\n    private elementRef: ElementRef,\r\n    private _changeDetectorRef: ChangeDetectorRef,\r\n    @Inject(PLATFORM_ID) private _platformId: Object,\r\n    private vtsDestroyService: VtsDestroyService\r\n  ) {\r\n    this._vtsPagination = false;\r\n    this._vtsNavigation = false;\r\n    this._vtsScrollbar = false;\r\n    this._vtsVirtual = false;\r\n  }\r\n\r\n  private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\r\n    if (!ref || !el) return;\r\n    if (el.nativeElement) {\r\n      if (ref[key] === el.nativeElement) {\r\n        return;\r\n      }\r\n      ref[key] = el.nativeElement;\r\n    }\r\n    const updateObj: { [key: string]: boolean } = {};\r\n    updateObj[update] = true;\r\n    this.updateInitCarousel(updateObj);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const { params } = getParams(this);\r\n    this.setSelfParams(params);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.childrenSlidesInit();\r\n    this.initCarousel();\r\n    this._changeDetectorRef.detectChanges();\r\n    setTimeout(() => {\r\n      this.vtsCarousel.emit(this.carouselRef);\r\n    });\r\n  }\r\n\r\n  private setSelfParams(params: any) {\r\n    Object.keys(params).forEach(k => {\r\n      const selfKey = `vts${upperFirst(k)}`;\r\n      //@ts-ignore\r\n      this[selfKey] = params[k];\r\n    });\r\n  }\r\n\r\n  private childrenSlidesInit() {\r\n    this.slidesChanges(this.slidesEl);\r\n    this.slidesEl.changes.pipe(takeUntil(this.vtsDestroyService)).subscribe(this.slidesChanges);\r\n  }\r\n\r\n  private slidesChanges = (val: QueryList<VtsCarouselSlideDirective>) => {\r\n    this.slides = val.map((slide: VtsCarouselSlideDirective, index: number) => {\r\n      slide.slideIndex = index;\r\n      slide.classNames = this.vtsSlideClass || '';\r\n      return slide;\r\n    });\r\n    if (this.vtsLoop && !this.vtsLoopedSlides) {\r\n      this.calcLoopedSlides();\r\n    }\r\n    if (!this.virtual) {\r\n      if (this.vtsLoopedSlides) {\r\n        this.prependSlides = of(this.slides.slice(this.slides.length - this.vtsLoopedSlides));\r\n        this.appendSlides = of(this.slides.slice(0, this.vtsLoopedSlides));\r\n      }\r\n    } else if (this.carouselRef && this.carouselRef.hasOwnProperty('virtual')) {\r\n      this._ngZone.runOutsideAngular(() => {\r\n        this.carouselRef!.virtual.slides = this.slides;\r\n        this.carouselRef!.virtual.update(true);\r\n      });\r\n    }\r\n\r\n    this._changeDetectorRef.detectChanges();\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this.carouselRef?.update();\r\n    });\r\n  };\r\n\r\n  get isCarouselActive() {\r\n    return this.carouselRef && !this.carouselRef.destroyed;\r\n  }\r\n\r\n  initCarousel() {\r\n    // const { params: carouselParams, passedParams } = getParams(this);\r\n    const { params: carouselParams } = getParams(this);\r\n    this.setSelfParams(carouselParams);\r\n    this._ngZone.runOutsideAngular(() => {\r\n      carouselParams.init = false;\r\n      if (!carouselParams.virtual) {\r\n        carouselParams.observer = true;\r\n      }\r\n\r\n      carouselParams.onAny = (eventName: keyof VtsCarouselComponent, ...args: any[]) => {\r\n        const emitter = this[\r\n          ('vts' + upperFirst(eventName)) as keyof VtsCarouselComponent\r\n        ] as EventEmitter<any>;\r\n        if (emitter) {\r\n          if (!(emitter instanceof EventEmitter)) return;\r\n          if (Object.keys(EventMappers).includes(eventName)) {\r\n            emitter.emit(EventMappers[eventName as keyof typeof EventMappers](args as any));\r\n          } else emitter.emit([...args]);\r\n        }\r\n      };\r\n      const _slideClasses: VtsCarouselEvents['_slideClasses'] = (_, updated) => {\r\n        updated.forEach(({ slideEl, classNames }, index) => {\r\n          const dataIndex = slideEl.getAttribute('data-carousel-slide-index');\r\n          const slideIndex = dataIndex ? parseInt(dataIndex) : index;\r\n          if (this.virtual) {\r\n            const virtualSlide = this.slides.find(item => {\r\n              return item.virtualIndex && item.virtualIndex === slideIndex;\r\n            });\r\n            if (virtualSlide) {\r\n              virtualSlide.classNames = classNames;\r\n              return;\r\n            }\r\n          }\r\n\r\n          if (this.slides[slideIndex]) {\r\n            this.slides[slideIndex].classNames = classNames;\r\n          }\r\n        });\r\n        this._changeDetectorRef.detectChanges();\r\n      };\r\n      const _containerClasses: VtsCarouselEvents['_containerClasses'] = (_, classes) => {\r\n        setTimeout(() => {\r\n          this.containerClasses = classes;\r\n        });\r\n      };\r\n      Object.assign(carouselParams.on, {\r\n        _containerClasses,\r\n        _slideClasses\r\n      });\r\n      const carouselRef = new Carousel(carouselParams) as any as ICarousel;\r\n      if (carouselParams.vtsLoop) {\r\n        carouselRef.vtsLoopedSlides = this.vtsLoopedSlides!;\r\n      }\r\n      const isVirtualEnabled = isEnabled(carouselRef.params.virtual!);\r\n      if (carouselRef.virtual && isVirtualEnabled) {\r\n        carouselRef.virtual.slides = this.slides;\r\n        const extendWith = {\r\n          cache: false,\r\n          slides: this.slides,\r\n          renderExternal: this.updateVirtualSlides,\r\n          renderExternalUpdate: false\r\n        };\r\n        extend(carouselRef.params.virtual, extendWith);\r\n        extend(carouselRef.originalParams.virtual, extendWith);\r\n      }\r\n\r\n      if (isPlatformBrowser(this._platformId)) {\r\n        this.carouselRef = carouselRef.init(this.elementRef.nativeElement) as any as ICarousel;\r\n        const isVirtualEnabled = isEnabled(this.carouselRef?.params.virtual!);\r\n        if (this.carouselRef?.virtual && isVirtualEnabled) {\r\n          this.carouselRef.virtual.update(true);\r\n        }\r\n        this._changeDetectorRef.detectChanges();\r\n      }\r\n    });\r\n  }\r\n\r\n  style: any = null;\r\n  currentVirtualData: any; // TODO: type virtualData;\r\n  private updateVirtualSlides = (virtualData: any) => {\r\n    // TODO: type virtualData\r\n    if (\r\n      !this.carouselRef ||\r\n      (this.currentVirtualData &&\r\n        this.currentVirtualData.from === virtualData.from &&\r\n        this.currentVirtualData.to === virtualData.to &&\r\n        this.currentVirtualData.offset === virtualData.offset)\r\n    ) {\r\n      return;\r\n    }\r\n    this.style = this.carouselRef.isHorizontal()\r\n      ? {\r\n          [this.carouselRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\r\n        }\r\n      : {\r\n          top: `${virtualData.offset}px`\r\n        };\r\n    this.currentVirtualData = virtualData;\r\n    this._activeSlides.next(virtualData.slides);\r\n    this._ngZone.run(() => {\r\n      this._changeDetectorRef.detectChanges();\r\n    });\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this.carouselRef!.updateSlides();\r\n      this.carouselRef!.updateProgress();\r\n      this.carouselRef!.updateSlidesClasses();\r\n      if (isEnabled(this.carouselRef!.params.lazy!)) {\r\n        this.carouselRef!.lazy.load();\r\n      }\r\n      this.carouselRef!.virtual.update(true);\r\n    });\r\n    return;\r\n  };\r\n\r\n  ngOnChanges(changedParams: SimpleChanges) {\r\n    this.updateCarousel(changedParams);\r\n    this._changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  updateInitCarousel(changedParams: any) {\r\n    if (!(changedParams && this.carouselRef && !this.carouselRef.destroyed)) {\r\n      return;\r\n    }\r\n\r\n    this._ngZone.runOutsideAngular(() => {\r\n      const {\r\n        // params: currentParams,\r\n        pagination,\r\n        navigation,\r\n        scrollbar,\r\n        // virtual,\r\n        thumbs\r\n      } = this.carouselRef!;\r\n\r\n      if (changedParams.vtsPagination) {\r\n        if (\r\n          this.vtsPagination &&\r\n          typeof this.vtsPagination !== 'boolean' &&\r\n          this.vtsPagination.el &&\r\n          pagination &&\r\n          !pagination.el\r\n        ) {\r\n          this.updateParameter('vtsPagination', this.vtsPagination);\r\n          pagination.init();\r\n          pagination.render();\r\n          pagination.update();\r\n        } else {\r\n          pagination.destroy();\r\n          // pagination.el = null;\r\n        }\r\n      }\r\n\r\n      if (changedParams.vtsScrollbar) {\r\n        if (\r\n          this.vtsScrollbar &&\r\n          typeof this.vtsScrollbar !== 'boolean' &&\r\n          this.vtsScrollbar.el &&\r\n          scrollbar &&\r\n          !scrollbar.el\r\n        ) {\r\n          this.updateParameter('vtsScrollbar', this.vtsScrollbar);\r\n          scrollbar.init();\r\n          scrollbar.updateSize();\r\n          scrollbar.setTranslate();\r\n        } else {\r\n          scrollbar.destroy();\r\n          // scrollbar.el = null;\r\n        }\r\n      }\r\n\r\n      if (changedParams.vtsNavigation) {\r\n        if (\r\n          this.vtsNavigation &&\r\n          typeof this.vtsNavigation !== 'boolean' &&\r\n          this.vtsNavigation.prevEl &&\r\n          this.vtsNavigation.nextEl &&\r\n          navigation &&\r\n          !navigation.prevEl &&\r\n          !navigation.nextEl\r\n        ) {\r\n          this.updateParameter('vtsNavigation', this.vtsNavigation);\r\n          navigation.init();\r\n          navigation.update();\r\n        } else if (navigation.prevEl && navigation.nextEl) {\r\n          navigation.destroy();\r\n          // navigation.nextEl = null;\r\n          // navigation.prevEl = null;\r\n        }\r\n      }\r\n      if (changedParams.vtsThumbs && this.vtsThumbs && this.vtsThumbs.carousel) {\r\n        this.updateParameter('vtsThumbs', this.vtsThumbs);\r\n        const initialized = thumbs.init();\r\n        if (initialized) thumbs.update(true);\r\n      }\r\n\r\n      if (changedParams.vtsController && this.vtsController && this.vtsController.control) {\r\n        this.carouselRef!.controller.control = this.vtsController.control;\r\n      }\r\n\r\n      this.carouselRef!.update();\r\n    });\r\n  }\r\n\r\n  updateCarousel(changedParams: SimpleChanges | any) {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      if (changedParams.config) {\r\n        return;\r\n      }\r\n      if (!(changedParams && this.carouselRef && !this.carouselRef.destroyed)) {\r\n        return;\r\n      }\r\n      for (const key in changedParams) {\r\n        if (ignoreNgOnChanges.indexOf(key) >= 0) {\r\n          continue;\r\n        }\r\n        const newValue = changedParams[key]?.currentValue ?? changedParams[key];\r\n        this.updateParameter(key, newValue);\r\n      }\r\n\r\n      if (changedParams.vtsAllowSlideNext) {\r\n        this.carouselRef.vtsAllowSlideNext = this.vtsAllowSlideNext ? true : false;\r\n      }\r\n      if (changedParams.vtsAllowSlidePrev) {\r\n        this.carouselRef.vtsAllowSlidePrev = this.vtsAllowSlidePrev ? true : false;\r\n      }\r\n      if (changedParams.vtsDirection) {\r\n        this.carouselRef.changeDirection(this.vtsDirection, false);\r\n      }\r\n      if (changedParams.vtsBreakpoints) {\r\n        if (this.vtsLoop && !this.vtsLoopedSlides) {\r\n          this.calcLoopedSlides();\r\n        }\r\n        this.carouselRef.currentBreakpoint = null;\r\n        this.carouselRef.setBreakpoint();\r\n      }\r\n\r\n      if (changedParams.vtsThumbs || changedParams.vtsController) {\r\n        this.updateInitCarousel(changedParams);\r\n      }\r\n      this.carouselRef.update();\r\n    });\r\n  }\r\n\r\n  calcLoopedSlides() {\r\n    if (!this.vtsLoop) {\r\n      return false;\r\n    }\r\n    let vtsSlidesPerViewParams = this.vtsSlidesPerView;\r\n    if (this.vtsBreakpoints) {\r\n      const breakpoint = Carousel.prototype.getBreakpoint(this.vtsBreakpoints) as VtsSafeAny;\r\n      const breakpointOnlyParams =\r\n        breakpoint in this.vtsBreakpoints ? this.vtsBreakpoints[breakpoint] : undefined;\r\n      if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\r\n        vtsSlidesPerViewParams = breakpointOnlyParams.slidesPerView;\r\n      }\r\n    }\r\n    if (vtsSlidesPerViewParams === 'auto') {\r\n      this.vtsLoopedSlides = this.slides.length;\r\n      return this.slides.length;\r\n    }\r\n    let vtsLoopedSlides = this.vtsLoopedSlides || vtsSlidesPerViewParams;\r\n    if (!vtsLoopedSlides) {\r\n      // ?\r\n      return false;\r\n    }\r\n\r\n    if (this.vtsLoopAdditionalSlides) {\r\n      vtsLoopedSlides += this.vtsLoopAdditionalSlides;\r\n    }\r\n    if (vtsLoopedSlides > this.slides.length) {\r\n      vtsLoopedSlides = this.slides.length;\r\n    }\r\n    this.vtsLoopedSlides = vtsLoopedSlides;\r\n    return true;\r\n  }\r\n\r\n  updateParameter(key: string, value: any) {\r\n    if (!(this.carouselRef && !this.carouselRef.destroyed)) {\r\n      return;\r\n    }\r\n    const _key = camelCase(key.replace(/^_/, '').replace(/^vts/, '')) as keyof VtsCarouselOptions;\r\n    const isCurrentParamObj = isObject(this.carouselRef.params[_key]);\r\n\r\n    if (_key === 'enabled') {\r\n      if (value === true) {\r\n        this.carouselRef.enable();\r\n      } else if (value === false) {\r\n        this.carouselRef.disable();\r\n      }\r\n      return;\r\n    }\r\n    if (isCurrentParamObj && isObject(value)) {\r\n      extend(this.carouselRef.params[_key], value);\r\n    } else {\r\n      (this.carouselRef.params[_key] as any) = value;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this.carouselRef?.destroy(true, false);\r\n    });\r\n  }\r\n}\r\n\r\ntype OmitPaginationOptions = Omit<VtsCarouselPaginationOptions, 'el' | 'renderCustom' | 'type'> & {\r\n  /**\r\n   * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'`\r\n   *\r\n   * @default 'bullets'\r\n   */\r\n  type?: 'bullets' | 'fraction' | 'progressbar';\r\n};\r\ntype VtsCarouselBreakpointOptions = {\r\n  [width: number]: VtsCarouselOptions;\r\n  [ratio: string]: VtsCarouselOptions;\r\n};\r\n\r\nexport {\r\n  VtsCarouselOptions,\r\n  VtsCarouselEvents,\r\n  VtsCarouselNavigationOptions,\r\n  OmitPaginationOptions as VtsCarouselPaginationOptions,\r\n  VtsCarouselScrollbarOptions,\r\n  VtsCarouselVirtualOptions,\r\n  VtsCarouselControllerOptions,\r\n  VtsCarouselThumbsOptions,\r\n  VtsCarouselAutoplayOptions,\r\n  VtsCarouselBreakpointOptions\r\n};\r\n","<ng-content select=\"[slot=container-start]\"></ng-content>\r\n<ng-container *ngIf=\"vtsNavigation && showPrevNavigation\">\r\n  <div class=\"vts-carousel-button-prev\" #vtsPrevElRef>\r\n    <svg class=\"vts-carousel-button-ico\" width=\"17\" height=\"30\" viewBox=\"0 0 17 30\" fill=\"none\"\r\n      xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\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\"\r\n        fill=\"currentColor\" />\r\n    </svg>\r\n  </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"vtsNavigation && showNextNavigation\">\r\n  <div class=\"vts-carousel-button-next\" #vtsNextElRef>\r\n    <svg class=\"vts-carousel-button-ico\" width=\"17\" height=\"30\" viewBox=\"0 0 17 30\" fill=\"none\"\r\n      xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\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\"\r\n        fill=\"currentColor\" />\r\n    </svg>\r\n  </div>\r\n</ng-container>\r\n<div *ngIf=\"vtsScrollbar && showScrollbar\" class=\"vts-carousel-scrollbar\" #vtsScrollbarElRef></div>\r\n<ng-container *ngIf=\"vtsPagination && showPagination\">\r\n  <ng-container *ngIf=\"_useCustomPagination; else defaultPagination\">\r\n    <ng-content select=\"vts-carousel-pagination\"></ng-content>\r\n  </ng-container>\r\n  <ng-template #defaultPagination>\r\n    <div class=\"vts-carousel-pagination\" #vtsPaginationElRef></div>\r\n  </ng-template>\r\n</ng-container>\r\n\r\n<div [ngClass]=\"vtsWrapperClass\" [attr.id]=\"id\">\r\n  <ng-content select=\"[slot=wrapper-start]\"></ng-content>\r\n  <ng-template *ngTemplateOutlet=\"\r\n        slidesTemplate;\r\n        context: {\r\n          loopSlides: prependSlides,\r\n          key: 'prepend'\r\n        }\r\n      \"></ng-template>\r\n  <ng-template *ngTemplateOutlet=\"\r\n        slidesTemplate;\r\n        context: {\r\n          loopSlides: activeSlides,\r\n          key: ''\r\n        }\r\n      \"></ng-template>\r\n  <ng-template *ngTemplateOutlet=\"\r\n        slidesTemplate;\r\n        context: {\r\n          loopSlides: appendSlides,\r\n          key: 'append'\r\n        }\r\n      \"></ng-template>\r\n  <ng-content select=\"[slot=wrapper-end]\"></ng-content>\r\n</div>\r\n<ng-content select=\"[slot=container-end]\"></ng-content>\r\n\r\n<ng-template #slidesTemplate let-loopSlides=\"loopSlides\" let-slideKey=\"key\">\r\n  <div *ngFor=\"let slide of loopSlides | async\" [ngClass]=\"\r\n        (slide.class ? slide.class + ' ' : '') +\r\n        vtsSlideClass +\r\n        (slideKey !== '' ? ' ' + vtsSlideDuplicateClass : '')\r\n      \" [attr.data-carousel-slide-index]=\"slide.virtualIndex ? slide.virtualIndex : slide.slideIndex\"\r\n    [attr.data-carousel-autoplay]=\"slide.autoplayDelay\" [style]=\"style\" [ngSwitch]=\"slide.zoom\">\r\n    <div *ngSwitchCase=\"true\" [ngClass]=\"zoomContainerClass\">\r\n      <ng-template [ngTemplateOutlet]=\"slide.template\" [ngTemplateOutletContext]=\"{\r\n            $implicit: slide.slideData\r\n          }\"></ng-template>\r\n    </div>\r\n    <ng-container *ngSwitchDefault>\r\n      <ng-template [ngTemplateOutlet]=\"slide.template\" [ngTemplateOutletContext]=\"{\r\n            $implicit: slide.slideData\r\n          }\"></ng-template>\r\n    </ng-container>\r\n  </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { BidiModule } from '@angular/cdk/bidi';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VtsCarouselComponent } from './carousel.component';\r\nimport { VtsCarouselSlideDirective } from './carousel-slide.directive';\r\nimport { VtsCarouselPaginationComponent } from './carousel-pagination.component';\r\n@NgModule({\r\n  declarations: [VtsCarouselComponent, VtsCarouselSlideDirective, VtsCarouselPaginationComponent],\r\n  exports: [VtsCarouselComponent, VtsCarouselSlideDirective, VtsCarouselPaginationComponent],\r\n  imports: [BidiModule, CommonModule, PlatformModule]\r\n})\r\nexport class VtsCarouselModule {}\r\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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"}