{"version":3,"file":"innerSliderUtils.cjs","sources":["../../../../../../../packages/vue-components/vc-slick/src/utils/innerSliderUtils.js"],"sourcesContent":["// import { supportsPassive } from '@antdv/utils';\n\nexport function clamp(number, lowerBound, upperBound) {\n  return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nexport function safePreventDefault(event) {\n  const passiveEvents = ['touchstart', 'touchmove', 'wheel'];\n  if (!passiveEvents.includes(event.type))\n    event.preventDefault();\n}\n\nexport function getOnDemandLazySlides(spec) {\n  const onDemandSlides = [];\n  const startIndex = lazyStartIndex(spec);\n  const endIndex = lazyEndIndex(spec);\n  for (let slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n    if (!spec.lazyLoadedList.includes(slideIndex))\n      onDemandSlides.push(slideIndex);\n  }\n  return onDemandSlides;\n}\n\n// return list of slides that need to be present\nexport function getRequiredLazySlides(spec) {\n  const requiredSlides = [];\n  const startIndex = lazyStartIndex(spec);\n  const endIndex = lazyEndIndex(spec);\n  for (let slideIndex = startIndex; slideIndex < endIndex; slideIndex++)\n    requiredSlides.push(slideIndex);\n\n  return requiredSlides;\n}\n\n// startIndex that needs to be present\nexport const lazyStartIndex = spec => spec.currentSlide - lazySlidesOnLeft(spec);\nexport const lazyEndIndex = spec => spec.currentSlide + lazySlidesOnRight(spec);\nexport function lazySlidesOnLeft(spec) {\n  return spec.centerMode\n    ? Math.floor(spec.slidesToShow / 2) + (Number.parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : 0;\n}\nexport function lazySlidesOnRight(spec) {\n  return spec.centerMode\n    ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (Number.parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : spec.slidesToShow;\n}\n\n// get width of an element\nexport const getWidth = elem => (elem && elem.offsetWidth) || 0;\nexport const getHeight = elem => (elem && elem.offsetHeight) || 0;\nexport function getSwipeDirection(touchObject, verticalSwiping = false) {\n  let swipeAngle;\n  const xDist = touchObject.startX - touchObject.curX;\n  const yDist = touchObject.startY - touchObject.curY;\n  const r = Math.atan2(yDist, xDist);\n  swipeAngle = Math.round((r * 180) / Math.PI);\n  if (swipeAngle < 0)\n    swipeAngle = 360 - Math.abs(swipeAngle);\n\n  if ((swipeAngle <= 45 && swipeAngle >= 0) || (swipeAngle <= 360 && swipeAngle >= 315))\n    return 'left';\n\n  if (swipeAngle >= 135 && swipeAngle <= 225)\n    return 'right';\n\n  if (verticalSwiping === true) {\n    if (swipeAngle >= 35 && swipeAngle <= 135)\n      return 'up';\n    else\n      return 'down';\n  }\n\n  return 'vertical';\n}\n\n// whether or not we can go next\nexport function canGoNext(spec) {\n  let canGo = true;\n  if (!spec.infinite) {\n    if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n      canGo = false;\n    }\n    else if (\n      spec.slideCount <= spec.slidesToShow\n      || spec.currentSlide >= spec.slideCount - spec.slidesToShow\n    ) {\n      canGo = false;\n    }\n  }\n  return canGo;\n}\n\n// given an object and a list of keys, return new object with given keys\nexport function extractObject(spec, keys) {\n  const newObject = {};\n  keys.forEach(key => (newObject[key] = spec[key]));\n  return newObject;\n}\n\n// get initialized state\nexport function initializedState(spec) {\n  // spec also contains listRef, trackRef\n  const slideCount = spec.children.length;\n  const listNode = spec.listRef;\n  const listWidth = Math.ceil(getWidth(listNode));\n  const trackNode = spec.trackRef;\n  const trackWidth = Math.ceil(getWidth(trackNode));\n  let slideWidth;\n  if (!spec.vertical) {\n    let centerPaddingAdj = spec.centerMode && Number.parseInt(spec.centerPadding) * 2;\n    if (typeof spec.centerPadding === 'string' && spec.centerPadding.slice(-1) === '%')\n      centerPaddingAdj *= listWidth / 100;\n\n    slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n  } else {\n    slideWidth = listWidth;\n  }\n  const slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n  const listHeight = slideHeight * spec.slidesToShow;\n  let currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n  if (spec.rtl && spec.currentSlide === undefined)\n    currentSlide = slideCount - 1 - spec.initialSlide;\n\n  let lazyLoadedList = spec.lazyLoadedList || [];\n  const slidesToLoad = getOnDemandLazySlides({ ...spec, currentSlide, lazyLoadedList }, spec);\n  lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n\n  const state = {\n    slideCount,\n    slideWidth,\n    listWidth,\n    trackWidth,\n    currentSlide,\n    slideHeight,\n    listHeight,\n    lazyLoadedList,\n  };\n\n  if (spec.autoplaying === null && spec.autoplay)\n    state.autoplaying = 'playing';\n\n  return state;\n}\n\nexport function slideHandler(spec) {\n  const {\n    waitForAnimate,\n    animating,\n    fade,\n    infinite,\n    index,\n    slideCount,\n    lazyLoad,\n    currentSlide,\n    centerMode,\n    slidesToScroll,\n    slidesToShow,\n    useCSS,\n  } = spec;\n  let { lazyLoadedList } = spec;\n  if (waitForAnimate && animating) return {};\n  let animationSlide = index;\n  let finalSlide;\n  let animationLeft;\n  let finalLeft;\n  let state = {};\n  let nextState = {};\n  const targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n  if (fade) {\n    if (!infinite && (index < 0 || index >= slideCount)) return {};\n    if (index < 0)\n      animationSlide = index + slideCount;\n    else if (index >= slideCount)\n      animationSlide = index - slideCount;\n\n    if (lazyLoad && !lazyLoadedList.includes(animationSlide))\n      lazyLoadedList = lazyLoadedList.concat(animationSlide);\n\n    state = {\n      animating: true,\n      currentSlide: animationSlide,\n      lazyLoadedList,\n      targetSlide: animationSlide,\n    };\n    nextState = { animating: false, targetSlide: animationSlide };\n  } else {\n    finalSlide = animationSlide;\n    if (animationSlide < 0) {\n      finalSlide = animationSlide + slideCount;\n      if (!infinite) finalSlide = 0;\n      else if (slideCount % slidesToScroll !== 0)\n        finalSlide = slideCount - (slideCount % slidesToScroll);\n    } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n      animationSlide = finalSlide = currentSlide;\n    } else if (centerMode && animationSlide >= slideCount) {\n      animationSlide = infinite ? slideCount : slideCount - 1;\n      finalSlide = infinite ? 0 : slideCount - 1;\n    } else if (animationSlide >= slideCount) {\n      finalSlide = animationSlide - slideCount;\n      if (!infinite) finalSlide = slideCount - slidesToShow;\n      else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n    }\n\n    if (!infinite && animationSlide + slidesToShow >= slideCount)\n      finalSlide = slideCount - slidesToShow;\n\n    animationLeft = getTrackLeft({ ...spec, slideIndex: animationSlide });\n    finalLeft = getTrackLeft({ ...spec, slideIndex: finalSlide });\n    if (!infinite) {\n      if (animationLeft === finalLeft) animationSlide = finalSlide;\n      animationLeft = finalLeft;\n    }\n    if (lazyLoad) {\n      lazyLoadedList = lazyLoadedList.concat(\n        getOnDemandLazySlides({ ...spec, currentSlide: animationSlide }),\n      );\n    }\n    if (!useCSS) {\n      state = {\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS({ ...spec, left: finalLeft }),\n        lazyLoadedList,\n        targetSlide,\n      };\n    } else {\n      state = {\n        animating: true,\n        currentSlide: finalSlide,\n        trackStyle: getTrackAnimateCSS({ ...spec, left: animationLeft }),\n        lazyLoadedList,\n        targetSlide,\n      };\n      nextState = {\n        animating: false,\n        currentSlide: finalSlide,\n        trackStyle: getTrackCSS({ ...spec, left: finalLeft }),\n        swipeLeft: null,\n        targetSlide,\n      };\n    }\n  }\n  return { state, nextState };\n}\n\nexport function changeSlide(spec, options) {\n  let previousInt, slideOffset, targetSlide;\n  const {\n    slidesToScroll,\n    slidesToShow,\n    slideCount,\n    currentSlide,\n    targetSlide: previousTargetSlide,\n    lazyLoad,\n    infinite,\n  } = spec;\n  const unevenOffset = slideCount % slidesToScroll !== 0;\n  const indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n  if (options.message === 'previous') {\n    slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n    targetSlide = currentSlide - slideOffset;\n    if (lazyLoad && !infinite) {\n      previousInt = currentSlide - slideOffset;\n      targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n    }\n    if (!infinite)\n      targetSlide = previousTargetSlide - slidesToScroll;\n  } else if (options.message === 'next') {\n    slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n    targetSlide = currentSlide + slideOffset;\n    if (lazyLoad && !infinite)\n      targetSlide = ((currentSlide + slidesToScroll) % slideCount) + indexOffset;\n\n    if (!infinite)\n      targetSlide = previousTargetSlide + slidesToScroll;\n  } else if (options.message === 'dots') {\n    // Click on dots\n    targetSlide = options.index * options.slidesToScroll;\n  } else if (options.message === 'children') {\n    // Click on the slides\n    targetSlide = options.index;\n\n    if (infinite) {\n      const direction = siblingDirection({ ...spec, targetSlide });\n      if (targetSlide > options.currentSlide && direction === 'left')\n        targetSlide = targetSlide - slideCount;\n      else if (targetSlide < options.currentSlide && direction === 'right')\n        targetSlide = targetSlide + slideCount;\n    }\n  } else if (options.message === 'index') {\n    targetSlide = Number(options.index);\n  }\n  return targetSlide;\n}\nexport function keyHandler(e, accessibility, rtl) {\n  if (e.target.tagName.match('TEXTAREA|INPUT|SELECT') || !accessibility)\n    return '';\n\n  if (e.keyCode === 37) return rtl ? 'next' : 'previous';\n  if (e.keyCode === 39) return rtl ? 'previous' : 'next';\n  return '';\n}\n\nexport function swipeStart(e, swipe, draggable) {\n  e.target.tagName === 'IMG' && safePreventDefault(e);\n  if (!swipe || (!draggable && e.type.includes('mouse'))) return '';\n  return {\n    dragging: true,\n    touchObject: {\n      startX: e.touches ? e.touches[0].pageX : e.clientX,\n      startY: e.touches ? e.touches[0].pageY : e.clientY,\n      curX: e.touches ? e.touches[0].pageX : e.clientX,\n      curY: e.touches ? e.touches[0].pageY : e.clientY,\n    },\n  };\n}\nexport function swipeMove(e, spec) {\n  // spec also contains, trackRef and slideIndex\n  const {\n    scrolling,\n    animating,\n    vertical,\n    swipeToSlide,\n    verticalSwiping,\n    rtl,\n    currentSlide,\n    edgeFriction,\n    edgeDragged,\n    onEdge,\n    swiped,\n    swiping,\n    slideCount,\n    slidesToScroll,\n    infinite,\n    touchObject,\n    swipeEvent,\n    listHeight,\n    listWidth,\n  } = spec;\n  if (scrolling) return;\n  if (animating) return safePreventDefault(e);\n  if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n  let swipeLeft;\n  let state = {};\n  const curLeft = getTrackLeft(spec);\n  touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n  touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n  touchObject.swipeLength = Math.round(\n    Math.sqrt((touchObject.curX - touchObject.startX) ** 2),\n  );\n  const verticalSwipeLength = Math.round(\n    Math.sqrt((touchObject.curY - touchObject.startY) ** 2),\n  );\n  if (!verticalSwiping && !swiping && verticalSwipeLength > 10)\n    return { scrolling: true };\n\n  if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n  let positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n  if (verticalSwiping)\n    positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n\n  const dotCount = Math.ceil(slideCount / slidesToScroll);\n  const swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n  let touchSwipeLength = touchObject.swipeLength;\n  if (!infinite) {\n    if (\n      (currentSlide === 0 && (swipeDirection === 'right' || swipeDirection === 'down'))\n      || (currentSlide + 1 >= dotCount && (swipeDirection === 'left' || swipeDirection === 'up'))\n      || (!canGoNext(spec) && (swipeDirection === 'left' || swipeDirection === 'up'))\n    ) {\n      touchSwipeLength = touchObject.swipeLength * edgeFriction;\n      if (edgeDragged === false && onEdge) {\n        onEdge(swipeDirection);\n        state.edgeDragged = true;\n      }\n    }\n  }\n  if (!swiped && swipeEvent) {\n    swipeEvent(swipeDirection);\n    state.swiped = true;\n  }\n  if (!vertical) {\n    if (!rtl)\n      swipeLeft = curLeft + touchSwipeLength * positionOffset;\n    else\n      swipeLeft = curLeft - touchSwipeLength * positionOffset;\n  } else {\n    swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n  }\n  if (verticalSwiping)\n    swipeLeft = curLeft + touchSwipeLength * positionOffset;\n\n  state = {\n    ...state,\n    touchObject,\n    swipeLeft,\n    trackStyle: getTrackCSS({ ...spec, left: swipeLeft }),\n  };\n  if (\n    Math.abs(touchObject.curX - touchObject.startX)\n    < Math.abs(touchObject.curY - touchObject.startY) * 0.8\n  ) {\n    return state;\n  }\n\n  if (touchObject.swipeLength > 10) {\n    state.swiping = true;\n    safePreventDefault(e);\n  }\n  return state;\n}\nexport function swipeEnd(e, spec) {\n  const {\n    dragging,\n    swipe,\n    touchObject,\n    listWidth,\n    touchThreshold,\n    verticalSwiping,\n    listHeight,\n    swipeToSlide,\n    scrolling,\n    onSwipe,\n    targetSlide,\n    currentSlide,\n    infinite,\n  } = spec;\n  if (!dragging) {\n    if (swipe) safePreventDefault(e);\n    return {};\n  }\n  const minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n  const swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n  // reset the state of touch related state variables.\n  const state = {\n    dragging: false,\n    edgeDragged: false,\n    scrolling: false,\n    swiping: false,\n    swiped: false,\n    swipeLeft: null,\n    touchObject: {},\n  };\n  if (scrolling)\n    return state;\n\n  if (!touchObject.swipeLength)\n    return state;\n\n  if (touchObject.swipeLength > minSwipe) {\n    safePreventDefault(e);\n    if (onSwipe)\n      onSwipe(swipeDirection);\n\n    let slideCount, newSlide;\n    const activeSlide = infinite ? currentSlide : targetSlide;\n    switch (swipeDirection) {\n      case 'left':\n      case 'up':\n        newSlide = activeSlide + getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state.currentDirection = 0;\n        break;\n      case 'right':\n      case 'down':\n        newSlide = activeSlide - getSlideCount(spec);\n        slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n        state.currentDirection = 1;\n        break;\n      default:\n        slideCount = activeSlide;\n    }\n    state.triggerSlideHandler = slideCount;\n  } else {\n    // Adjust the track back to it's original position.\n    const currentLeft = getTrackLeft(spec);\n    state.trackStyle = getTrackAnimateCSS({ ...spec, left: currentLeft });\n  }\n  return state;\n}\nexport function getNavigableIndexes(spec) {\n  const max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n  let breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n  let counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n  const indexes = [];\n  while (breakpoint < max) {\n    indexes.push(breakpoint);\n    breakpoint = counter + spec.slidesToScroll;\n    counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n  }\n  return indexes;\n}\nexport function checkNavigable(spec, index) {\n  const navigables = getNavigableIndexes(spec);\n  let prevNavigable = 0;\n  if (index > navigables[navigables.length - 1]) {\n    index = navigables[navigables.length - 1];\n  } else {\n    for (const n in navigables) {\n      if (index < navigables[n]) {\n        index = prevNavigable;\n        break;\n      }\n      prevNavigable = navigables[n];\n    }\n  }\n  return index;\n}\nexport function getSlideCount(spec) {\n  const centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n  if (spec.swipeToSlide) {\n    let swipedSlide;\n    const slickList = spec.listRef;\n    const slides = (slickList.querySelectorAll && slickList.querySelectorAll('.slick-slide')) || [];\n    Array.from(slides).every((slide) => {\n      if (!spec.vertical) {\n        if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      } else {\n        if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n          swipedSlide = slide;\n          return false;\n        }\n      }\n\n      return true;\n    });\n\n    if (!swipedSlide)\n      return 0;\n\n    const currentIndex\n      = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n    const slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n    return slidesTraversed;\n  } else {\n    return spec.slidesToScroll;\n  }\n}\n\nexport function checkSpecKeys(spec, keysArray) {\n  return keysArray.reduce((value, key) => value && spec.hasOwnProperty(key), true)\n    ? null\n    : console.error('Keys Missing:', spec);\n}\n\nexport function getTrackCSS(spec) {\n  checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth']);\n  let trackWidth, trackHeight;\n  const trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n  if (!spec.vertical)\n    trackWidth = getTotalSlides(spec) * spec.slideWidth;\n  else\n    trackHeight = trackChildren * spec.slideHeight;\n\n  let style = {\n    opacity: 1,\n    transition: '',\n    WebkitTransition: '',\n  };\n  if (spec.useTransform) {\n    const WebkitTransform = !spec.vertical\n      ? `translate3d(${spec.left}px, 0px, 0px)`\n      : `translate3d(0px, ${spec.left}px, 0px)`;\n    const transform = !spec.vertical\n      ? `translate3d(${spec.left}px, 0px, 0px)`\n      : `translate3d(0px, ${spec.left}px, 0px)`;\n    const msTransform = !spec.vertical\n      ? `translateX(${spec.left}px)`\n      : `translateY(${spec.left}px)`;\n    style = {\n      ...style,\n      WebkitTransform,\n      transform,\n      msTransform,\n    };\n  } else {\n    if (spec.vertical)\n      style.top = spec.left;\n    else\n      style.left = spec.left;\n  }\n  if (spec.fade) style = { opacity: 1 };\n  if (trackWidth) style.width = `${trackWidth}px`;\n  if (trackHeight) style.height = `${trackHeight}px`;\n\n  // Fallback for IE8\n  if (window && !window.addEventListener && window.attachEvent) {\n    if (!spec.vertical)\n      style.marginLeft = `${spec.left}px`;\n    else\n      style.marginTop = `${spec.left}px`;\n  }\n\n  return style;\n}\nexport function getTrackAnimateCSS(spec) {\n  checkSpecKeys(spec, [\n    'left',\n    'variableWidth',\n    'slideCount',\n    'slidesToShow',\n    'slideWidth',\n    'speed',\n    'cssEase',\n  ]);\n  const style = getTrackCSS(spec);\n  // useCSS is true by default so it can be undefined\n  if (spec.useTransform) {\n    style.WebkitTransition = `-webkit-transform ${spec.speed}ms ${spec.cssEase}`;\n    style.transition = `transform ${spec.speed}ms ${spec.cssEase}`;\n  } else {\n    if (spec.vertical)\n      style.transition = `top ${spec.speed}ms ${spec.cssEase}`;\n    else\n      style.transition = `left ${spec.speed}ms ${spec.cssEase}`;\n  }\n  return style;\n}\nexport function getTrackLeft(spec) {\n  if (spec.unslick)\n    return 0;\n\n  checkSpecKeys(spec, [\n    'slideIndex',\n    'trackRef',\n    'infinite',\n    'centerMode',\n    'slideCount',\n    'slidesToShow',\n    'slidesToScroll',\n    'slideWidth',\n    'listWidth',\n    'variableWidth',\n    'slideHeight',\n  ]);\n\n  const {\n    slideIndex,\n    trackRef,\n    infinite,\n    centerMode,\n    slideCount,\n    slidesToShow,\n    slidesToScroll,\n    slideWidth,\n    listWidth,\n    variableWidth,\n    slideHeight,\n    fade,\n    vertical,\n  } = spec;\n\n  let slideOffset = 0;\n  let targetLeft;\n  let targetSlide;\n  let verticalOffset = 0;\n\n  if (fade || spec.slideCount === 1)\n    return 0;\n\n  let slidesToOffset = 0;\n  if (infinite) {\n    slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n    // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n      slidesToOffset = -(slideIndex > slideCount\n        ? slidesToShow - (slideIndex - slideCount)\n        : slideCount % slidesToScroll);\n    }\n    // shift current slide to center of the frame\n    if (centerMode)\n      slidesToOffset += Number.parseInt(slidesToShow / 2);\n  } else {\n    if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount)\n      slidesToOffset = slidesToShow - (slideCount % slidesToScroll);\n\n    if (centerMode)\n      slidesToOffset = Number.parseInt(slidesToShow / 2);\n  }\n  slideOffset = slidesToOffset * slideWidth;\n  verticalOffset = slidesToOffset * slideHeight;\n\n  if (!vertical)\n    targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n  else\n    targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n\n  if (variableWidth === true) {\n    let targetSlideIndex;\n    const trackElem = trackRef;\n    targetSlideIndex = slideIndex + getPreClones(spec);\n    targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n    targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n    if (centerMode === true) {\n      targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n      targetSlide = trackElem && trackElem.children[targetSlideIndex];\n      targetLeft = 0;\n      for (let slide = 0; slide < targetSlideIndex; slide++) {\n        targetLeft\n          -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n      }\n      targetLeft -= Number.parseInt(spec.centerPadding);\n      targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n    }\n  }\n\n  return targetLeft;\n}\n\nexport function getPreClones(spec) {\n  if (spec.unslick || !spec.infinite)\n    return 0;\n\n  if (spec.variableWidth)\n    return spec.slideCount;\n\n  return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n}\n\nexport function getPostClones(spec) {\n  if (spec.unslick || !spec.infinite)\n    return 0;\n\n  return spec.slideCount;\n}\n\nexport function getTotalSlides(spec) {\n  return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n}\nexport function siblingDirection(spec) {\n  if (spec.targetSlide > spec.currentSlide) {\n    if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec))\n      return 'left';\n\n    return 'right';\n  } else {\n    if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec))\n      return 'right';\n\n    return 'left';\n  }\n}\n\nexport function slidesOnRight({ slidesToShow, centerMode, rtl, centerPadding }) {\n  // returns no of slides on the right of active slide\n  if (centerMode) {\n    let right = (slidesToShow - 1) / 2 + 1;\n    if (Number.parseInt(centerPadding) > 0) right += 1;\n    if (rtl && slidesToShow % 2 === 0) right += 1;\n    return right;\n  }\n  if (rtl)\n    return 0;\n\n  return slidesToShow - 1;\n}\n\nexport function slidesOnLeft({ slidesToShow, centerMode, rtl, centerPadding }) {\n  // returns no of slides on the left of active slide\n  if (centerMode) {\n    let left = (slidesToShow - 1) / 2 + 1;\n    if (Number.parseInt(centerPadding) > 0) left += 1;\n    if (!rtl && slidesToShow % 2 === 0) left += 1;\n    return left;\n  }\n  if (rtl)\n    return slidesToShow - 1;\n\n  return 0;\n}\n\nexport function canUseDOM() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n"],"names":[],"mappings":"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"}