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