|
- 'use strict';
-
- exports.__esModule = true;
- exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = undefined;
-
- var _reactDom = require('react-dom');
-
- var _reactDom2 = _interopRequireDefault(_reactDom);
-
- var _objectAssign = require('object-assign');
-
- var _objectAssign2 = _interopRequireDefault(_objectAssign);
-
- var _trackUtils = require('../utils/trackUtils');
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- // checks if spec is the superset of keys in keysArray, i.e., spec contains all the keys from keysArray
- var checkSpecKeys = function checkSpecKeys(spec, keysArray) {
- return keysArray.reduce(function (value, key) {
- return value && spec.hasOwnProperty(key);
- }, true) ? null : console.error('Keys Missing', spec);
- };
-
- var getTrackCSS = exports.getTrackCSS = function getTrackCSS(spec) {
- checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth']);
-
- var trackWidth, trackHeight;
- var trackChildren = spec.slideCount + 2 * spec.slidesToShow; // this should probably be getTotalSlides
- if (!spec.vertical) {
- trackWidth = (0, _trackUtils.getTotalSlides)(spec) * spec.slideWidth;
- } else {
- trackHeight = trackChildren * spec.slideHeight;
- }
-
- var style = {
- opacity: 1,
- WebkitTransform: !spec.vertical ? 'translate3d(' + spec.left + 'px, 0px, 0px)' : 'translate3d(0px, ' + spec.left + 'px, 0px)',
- transform: !spec.vertical ? 'translate3d(' + spec.left + 'px, 0px, 0px)' : 'translate3d(0px, ' + spec.left + 'px, 0px)',
- transition: '',
- WebkitTransition: '',
- msTransform: !spec.vertical ? 'translateX(' + spec.left + 'px)' : 'translateY(' + spec.left + 'px)'
- };
- if (spec.fade) {
- style = {
- opacity: 1
- };
- }
-
- if (trackWidth) {
- (0, _objectAssign2.default)(style, { width: trackWidth });
- }
-
- if (trackHeight) {
- (0, _objectAssign2.default)(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;
- };
-
- var getTrackAnimateCSS = exports.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
- style.WebkitTransition = '-webkit-transform ' + spec.speed + 'ms ' + spec.cssEase;
- style.transition = 'transform ' + spec.speed + 'ms ' + spec.cssEase;
- return style;
- };
-
- // gets total length of track that's on the left side of current slide
- var getTrackLeft = exports.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 = -(0, _trackUtils.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 lastSlide = _reactDom2.default.findDOMNode(trackRef).children[slideCount - 1];
- targetSlideIndex = slideIndex + (0, _trackUtils.getPreClones)(spec);
- targetSlide = _reactDom2.default.findDOMNode(trackRef).childNodes[targetSlideIndex];
- targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;
- if (centerMode === true) {
- targetSlideIndex = infinite ? slideIndex + (0, _trackUtils.getPreClones)(spec) : slideIndex;
- targetSlide = _reactDom2.default.findDOMNode(trackRef).children[targetSlideIndex];
- targetLeft = 0;
- for (var slide = 0; slide < targetSlideIndex; slide++) {
- targetLeft -= _reactDom2.default.findDOMNode(trackRef).children[slide].offsetWidth;
- }
- targetLeft -= parseInt(spec.centerPadding);
- targetLeft += (listWidth - targetSlide.offsetWidth) / 2;
- }
- }
-
- return targetLeft;
- };
|