UNPKG

slick-carousel

Version:

the last carousel you'll ever need

1,538 lines (1,044 loc) 36.6 kB
/* slick.js Author: Ken Wheeler Date: 03/23/14 */ /*global window, document, define, jQuery, setInterval, clearInterval */ (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else { factory(jQuery); } }(function ($) { 'use strict'; var Slick = window.Slick || {}, functionBinder; /************ Helpers ***********/ // Function Binder functionBinder = function (fn, me) { return function () { return fn.apply(me, arguments); }; }; /********** End Helpers *********/ Slick = (function () { function Slick(element, settings) { var _ = this, responsiveSettings, breakpoint; _.defaults = { accessibility: true, autoplay: false, autoplaySpeed: 3000, cssEase: 'ease', dots: false, draggable: true, fade: false, easing: 'linear', arrows: true, infinite: true, onBeforeChange: null, onAfterChange: null, pauseOnHover: true, responsive: null, slide: 'div', slidesToShow: 1, slidesToScroll: 1, speed: 300, swipe: true, touchMove: true, touchThreshold: 5 }; _.initials = { animating : false, autoPlayTimer : null, currentSlide : 0, currentLeft : null, direction : 1, dots : null, listWidth : null, loadIndex : 0, nextArrow : null, prevArrow : null, slideCount : null, slideWidth : null, slideTrack : null, slides : null, sliding : false, slideOffset : 0, swipeLeft : null, list : null, touchObject : {}, transformsEnabled : false }; $.extend(_, _.initials); _.activeBreakpoint = null; _.animType = null; _.breakpoints = []; _.breakpointSettings = []; _.slider = $(element); _.slidesCache = null; _.cssTransitions = false; _.options = $.extend({}, _.defaults, settings); _.originalSettings = _.options; responsiveSettings = _.options.responsive || null; if (responsiveSettings && responsiveSettings.length > -1) { for (breakpoint in responsiveSettings) { if (responsiveSettings.hasOwnProperty(breakpoint)) { _.breakpoints.push(responsiveSettings[ breakpoint].breakpoint); _.breakpointSettings[responsiveSettings[ breakpoint].breakpoint] = responsiveSettings[breakpoint].settings; } } _.breakpoints.sort(function (a, b) { return b - a; }); } _.autoPlay = functionBinder(_.autoPlay, _); _.autoPlayClear = functionBinder(_.autoPlayClear, _); _.changeSlide = functionBinder(_.changeSlide, _); _.setPosition = functionBinder(_.setPosition, _); _.swipeHandler = functionBinder(_.swipeHandler, _); _.dragHandler = functionBinder(_.dragHandler, _); _.keyHandler = functionBinder(_.keyHandler, _); _.autoPlayIterator = functionBinder(_.autoPlayIterator, _); _.init(); } return Slick; }()); Slick.prototype.init = function () { var _ = this; if (!$(_.slider).hasClass('slick-initialized')) { $(_.slider).addClass('slick-initialized'); _.buildOut(); _.getAnimType(); _.checkTransition(); _.startLoad(); _.loadSlider(); _.initializeEvents(); _.checkResponsive(); } }; Slick.prototype.addSlide = function (markup) { var _ = this; _.unload(); $(markup).appendTo(_.slideTrack); _.slides = _.slideTrack.find(this.options.slide); _.slideTrack.find(this.options.slide).remove(); _.slideTrack.append(_.slides); _.reinit(); }; Slick.prototype.removeSlide = function (index) { var _ = this; _.unload(); if(_.slideCount < 1) { return false; } $(_.slideTrack.find(this.options.slide).get(index)).remove(); _.slides = _.slideTrack.find(this.options.slide); _.slideTrack.find(this.options.slide).remove(); _.slideTrack.append(_.slides); _.reinit(); }; Slick.prototype.filterSlides = function (filter) { var _ = this; if(filter !== null) { _.unload(); _.slideTrack.find(this.options.slide).remove(); _.slidesCache.filter(filter).appendTo(_.slideTrack); _.reinit(); } }; Slick.prototype.unfilterSlides = function () { var _ = this; if(_.slidesCache !== null) { _.unload(); _.slideTrack.find(this.options.slide).remove(); _.slidesCache.appendTo(_.slideTrack); _.reinit(); } }; Slick.prototype.checkTransition = function () { var _ = this; if (document.body.style.WebkitTransition !== undefined) { _.cssTransitions = true; } else if (document.body.style.MozTransition !== undefined) { _.cssTransitions = true; } else if (document.body.style.msTransition !== undefined) { _.cssTransitions = true; } }; Slick.prototype.applyTransition = function (slide) { var _ = this, transition,origin; transition = 'all ' + _.options.speed + 'ms ' + _.options.cssEase; origin = (_.listWidth / 2) + ' 50%'; if (_.options.fade === false) { _.slideTrack.css({ transition: transition, transformOrigin: origin }); } else { $(_.slides.get(slide)).css({ transition: transition }); } }; Slick.prototype.disableTransition = function (slide) { var _ = this; if (_.options.fade === false) { _.slideTrack.css({ transition: '', transformOrigin: '' }); } else { $(_.slides.get(slide)).css({ transition: '' }); } }; Slick.prototype.getAnimType = function () { var _ = this; if (document.body.style.MozTransform !== undefined) { _.animType = 'MozTransform'; } else if (document.body.style.webkitTransform !== undefined) { _.animType = "webkitTransform"; } else if (document.body.style.msTransform !== undefined) { _.animType = "msTransform"; } if (_.animType !== null) { _.transformsEnabled = true; } }; Slick.prototype.autoPlay = function () { var _ = this; if (_.autoPlayTimer) { clearInterval(_.autoPlayTimer); } _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed); }; Slick.prototype.autoPlayClear = function () { var _ = this; if (_.autoPlayTimer) { clearInterval(_.autoPlayTimer); } }; Slick.prototype.autoPlayIterator = function () { var _ = this; if (_.options.infinite === false) { if (_.direction === 1) { if ((_.currentSlide + 1) === _.slideCount - 1) { _.direction = 0; } _.slideHandler(_.currentSlide + _.options .slidesToScroll); } else { if ((_.currentSlide - 1 === 0)) { _.direction = 1; } _.slideHandler(_.currentSlide - _.options .slidesToScroll); } } else { _.slideHandler(_.currentSlide + _.options.slidesToScroll); } }; Slick.prototype.checkResponsive = function () { var _ = this, breakpoint, targetBreakpoint; if (_.originalSettings.responsive && _.originalSettings .responsive.length > -1) { targetBreakpoint = null; for (breakpoint in _.breakpoints) { if (_.breakpoints.hasOwnProperty(breakpoint)) { if ($(window).width() < _.breakpoints[ breakpoint]) { targetBreakpoint = _.breakpoints[ breakpoint]; } } } if (targetBreakpoint !== null) { if (_.activeBreakpoint !== null) { if (targetBreakpoint !== _.activeBreakpoint) { _.activeBreakpoint = targetBreakpoint; _.options = $.extend({}, _.defaults, _.breakpointSettings[ targetBreakpoint]); _.refresh(); } } else { _.activeBreakpoint = targetBreakpoint; _.options = $.extend({}, _.defaults, _.breakpointSettings[ targetBreakpoint]); _.refresh(); } } else { if (_.activeBreakpoint !== null) { _.activeBreakpoint = null; _.options = $.extend({}, _.defaults, _.originalSettings); _.refresh(); } } } }; Slick.prototype.startLoad = function () { var _ = this; if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { _.prevArrow.hide(); _.nextArrow.hide(); } if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { _.dots.hide(); } _.slider.addClass('slick-loading'); }; Slick.prototype.initUI = function () { var _ = this; if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { _.prevArrow.show(); _.nextArrow.show(); } if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { _.dots.show(); } if (_.options.autoplay === true) { _.autoPlay(); } }; Slick.prototype.loadSlider = function () { var _ = this; _.setPosition(); _.slideTrack.css({ opacity: 1 }); if (document.readyState !== "complete") { $(window).load(function () { _.slider.removeClass('slick-loading'); _.initUI(); }); } else { _.slider.removeClass('slick-loading'); _.initUI(); } }; Slick.prototype.setValues = function () { var _ = this; _.listWidth = _.list.width(); _.slideWidth = Math.ceil(_.listWidth / _.options .slidesToShow); }; Slick.prototype.buildArrows = function () { var _ = this; if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { _.prevArrow = $( '<a href="javascript:void(0)" tabIndex="-1">Previous</a>').appendTo( _.slider).addClass('slick-prev'); _.nextArrow = $( '<a href="javascript:void(0)" tabIndex="-1">Next</a>').appendTo( _.slider).addClass('slick-next'); if (_.options.infinite !== true) { _.prevArrow.addClass('slick-disabled'); } } }; Slick.prototype.buildDots = function () { var _ = this, i, dotString; if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { dotString = '<ul class="slick-dots">'; for (i = 1; i <= _.slideCount; i += 1) { dotString += '<li><a href="javascript:void(0)" tabIndex="-1">' + i + '</a></li>'; } dotString += "</ul>"; _.dots = $(dotString).appendTo( _.slider); if (_.options.slidesToScroll > 1) { _.dots.find('li').hide(); i = 0; while (i < _.slideCount) { $(_.dots.find('li').get(i)).show(); i = i + _.options.slidesToScroll; } } _.dots.find('li').first().addClass( 'slick-active'); } }; Slick.prototype.setupInfinite = function () { var _ = this, i, slideIndex; if (_.options.infinite === true && _.options.fade === false) { slideIndex = null; for (i = _.slideCount; i > (_.slideCount - _.options.slidesToShow); i -= 1) { slideIndex = i - 1; $(_.slides[slideIndex]).clone().prependTo( _.slideTrack).addClass('slick-cloned'); } for (i = 0; i < _.options.slidesToShow; i += 1) { slideIndex = i; $(_.slides[slideIndex]).clone().appendTo( _.slideTrack).addClass('slick-cloned'); } } }; Slick.prototype.setupPlaceholders = function () { var _ = this, i, placeholders; if(_.options.fade === true) { _.options.slidesToShow = 1; _.options.slidesToScroll = 1; } if ((_.slideCount % _.options.slidesToScroll) !== 0 && _.options.slidesToShow !== 1) { placeholders = Math.abs(_.options.slidesToScroll - (_.slideCount % _.options.slidesToScroll) ); for (i = 0; i < placeholders; i += 1) { $('<div/>').appendTo(_.slideTrack).addClass( 'slick-slide slick-placeholder'); } _.slides = $('.slick-slide:not(.slick-cloned)', _.slider); _.slideCount = _.slides.length; } }; Slick.prototype.buildOut = function () { var _ = this; _.slides = $(_.options.slide + ':not(.slick-cloned)', _.slider).addClass( 'slick-slide'); _.slideCount = _.slides.length; _.slidesCache = _.slides; _.slider.addClass("slick-slider"); _.slideTrack = _.slides.wrapAll( '<div class="slick-track"/>').parent(); _.list = _.slideTrack.wrap( '<div class="slick-list"/>').parent(); _.slideTrack.css('opacity', 0); if(_.options.accessibility === true) { _.list.prop('tabIndex',0); } _.setupPlaceholders(); _.setupInfinite(); _.buildArrows(); _.buildDots(); _.setSlideClasses(0); if (_.options.draggable === true) { _.list.addClass('draggable'); } }; Slick.prototype.setDimensions = function () { var _ = this; _.slideWidth = Math.ceil(_.listWidth / _.options .slidesToShow); _.list.find('.slick-slide').width(_.slideWidth); _.slideTrack.width(Math.ceil((_.slideWidth * _ .slider.find('.slick-slide').length))); }; Slick.prototype.setPosition = function () { var _ = this, targetLeft; _.setValues(); _.setDimensions(); if (_.options.infinite === true) { _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; } if (_.options.fade === false) { targetLeft = ((_.currentSlide * _.slideWidth) * -1) + _.slideOffset; _.setLeft(targetLeft); } else { _.setFade(); } }; Slick.prototype.setFade = function() { var _ = this, targetLeft; _.slides.each(function (index,element) { targetLeft = (_.slideWidth * index) * -1; $(element).css({ position: 'relative', left: targetLeft, top: 0, zIndex: 800, opacity: 0 }); }); $(_.slides.get(_.currentSlide)).css({ zIndex: 900, opacity: 1 }); }; Slick.prototype.initArrowEvents = function () { var _ = this; if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { _.prevArrow.on('click.slick', { message: 'previous' }, _.changeSlide); _.nextArrow.on('click.slick', { message: 'next' }, _.changeSlide); } }; Slick.prototype.initDotEvents = function () { var _ = this; if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { $('li a', _.dots).on('click.slick', { message: 'index' }, _.changeSlide); } }; Slick.prototype.initializeEvents = function () { var _ = this; _.initArrowEvents(); _.initDotEvents(); if (_.options.swipe === true) { _.list.on('touchstart.slick', { action: 'start', kind: 'touch' }, _.swipeHandler); _.list.on('touchmove.slick', { action: 'move', kind: 'touch' }, _.swipeHandler); _.list.on('touchend.slick', { action: 'end', kind: 'touch' }, _.swipeHandler); _.list.on('touchcancel.slick', { action: 'end', kind: 'touch' }, _.swipeHandler); } if (_.options.draggable === true) { _.list.on('mousedown.slick', { action: 'start', kind: 'drag' }, _.swipeHandler); _.list.on('mousemove.slick', { action: 'move', kind: 'drag' }, _.swipeHandler); _.list.on('mouseup.slick', { action: 'end', kind: 'drag' }, _.swipeHandler); _.list.on('mouseleave.slick', { action: 'cancel', kind: 'drag' }, _.swipeHandler); } if (_.options.pauseOnHover === true && _.options.autoplay === true) { _.list.on('mouseenter.slick', _.autoPlayClear); _.list.on('mouseleave.slick', _.autoPlay); } _.list.on('keydown.slick', _.keyHandler); $(window).on('orientationchange.slick', _.setPosition); $(window).on('resize.slick', function () { _.checkResponsive(); _.setPosition(); }); $(window).on('load.slick', _.setPosition); }; Slick.prototype.changeSlide = function (event) { var _ = this; switch (event.data.message) { case 'previous': _.slideHandler(_.currentSlide - _.options .slidesToScroll); break; case 'next': _.slideHandler(_.currentSlide + _.options .slidesToScroll); break; case 'index': _.slideHandler($(event.target).parent().index()); break; default: return false; } }; Slick.prototype.updateDots = function () { var _ = this; if(_.dots !== null) { _.dots.find('li').removeClass('slick-active'); $(_.dots.find('li').get(_.currentSlide)).addClass( 'slick-active'); } }; Slick.prototype.updateArrows = function () { var _ = this; if (_.options.arrows === true && _.options.infinite !== true && _.slideCount > _.options.slidesToShow) { if (_.currentSlide === 0) { _.prevArrow.addClass('slick-disabled'); _.nextArrow.removeClass('slick-disabled'); } else if (_.currentSlide >= (_.slideCount / _.options.slidesToScroll * _.options.slidesToShow ) - _.options.slidesToScroll) { _.nextArrow.addClass('slick-disabled'); _.prevArrow.removeClass('slick-disabled'); } else { _.prevArrow.removeClass('slick-disabled'); _.nextArrow.removeClass('slick-disabled'); } } }; Slick.prototype.fadeSlide = function (slideIndex, callback) { var _ = this; if(_.cssTransitions === false) { $(_.slides.get(slideIndex)).css({zIndex: 999}); $(_.slides.get(slideIndex)).animate({ opacity: 1 }, _.options.speed,_.options.easing, callback); } else { $(_.slides.get(slideIndex)).css({zIndex: 999}); _.applyTransition(slideIndex); $(_.slides.get(slideIndex)).css({ opacity: 1 }); if(callback) { setTimeout(function(){ _.disableTransition(slideIndex); callback.call(); }, _.options.speed); } } }; Slick.prototype.animateSlide = function (targetLeft, callback) { var animProps = {}, _ = this; if (_.options.onBeforeChange !== null) { _.options.onBeforeChange.call(); } if (_.transformsEnabled === false) { _.slideTrack.animate({ left: targetLeft }, _.options.speed,_.options.easing, callback); } else { if(_.cssTransitions === false) { $({ animStart: _.currentLeft }).animate({ animStart: targetLeft }, { duration: _.options.speed, easing: _.options.easing, step: function (now) { animProps[_.animType] = "translate(" + now + "px, 0px)"; _.slideTrack.css(animProps); }, complete: function () { if (callback) { callback.call(); } } }); } else { _.applyTransition(); animProps[_.animType] = "translate3d(" + targetLeft + "px, 0px, 0px)"; _.slideTrack.css(animProps); if(callback) { setTimeout(function(){ _.disableTransition(); callback.call(); }, _.options.speed); } } } }; Slick.prototype.setSlideClasses = function (index) { var _ = this; _.slides.removeClass('slick-active'); $(_.slides.get(index)).addClass('slick-active'); }; Slick.prototype.postSlide = function (index) { var _ = this; _.animating = false; _.currentSlide = index; _.setPosition(); _.swipeLeft = null; _.updateDots(); _.updateArrows(); if (_.options.autoplay === true) { _.autoPlay(); } if (_.options.onAfterChange !== null) { _.options.onAfterChange.call(); } _.setSlideClasses(_.currentSlide); }; Slick.prototype.slideHandler = function (index) { var targetSlide, slideLeft, targetLeft = null, _ = this; if(_.animating === true) { return false; } targetSlide = index; targetLeft = ((targetSlide * _.slideWidth) * -1) + _.slideOffset; slideLeft = ((_.currentSlide * _.slideWidth) * -1) + _.slideOffset; if (_.options.autoplay === true) { clearInterval(_.autoPlayTimer); } if (_.swipeLeft === null) { _.currentLeft = slideLeft; } else { _.currentLeft = _.swipeLeft; } if (targetSlide < 0) { if (_.options.fade === true) { _.fadeSlide(_.slideCount - 1, function(){ _.postSlide(_.slideCount - 1); }); return false; } if (_.options.infinite === true) { _.animating = true; _.animateSlide(targetLeft, function () { _.postSlide(_.slideCount - _.options .slidesToScroll); }); } else { _.animateSlide(slideLeft); return false; } } else if (targetSlide > (_.slideCount - 1)) { if (_.options.fade === true) { _.fadeSlide(0, function(){ _.postSlide(0); }); return false; } if (_.options.infinite === true) { _.animating = true; _.animateSlide(targetLeft, function () { _.postSlide(0); }); } else { _.animateSlide(slideLeft); return false; } } else { _.animating = true; if (_.options.fade === true) { _.fadeSlide(targetSlide, function(){ _.postSlide(targetSlide); }); return false; } _.animateSlide(targetLeft, function () { _.postSlide(targetSlide); }); } }; Slick.prototype.setLeft = function (newLeft) { var _ = this, animProps = {}; if (_.transformsEnabled === false) { _.slideTrack.css('left', newLeft); } else { if(_.cssTransitions === false) { animProps[_.animType] = "translate(" + newLeft + "px, 0px)"; _.slideTrack.css(animProps); } else { animProps[_.animType] = "translate3d(" + newLeft + "px, 0px, 0px)"; _.slideTrack.css(animProps); } } }; Slick.prototype.swipeStart = function (event) { var _ = this, touches; touches = event.originalEvent.touches; if ((_.touchObject.fingerCount === 1 || event.data .kind === 'drag') && _.slideCount > _.options.slidesToShow) { if (event.data.kind === 'touch') { _.touchObject.startX = _.touchObject. curX =touches[0].pageX; _.touchObject.startY = _.touchObject. curY =touches[0].pageY; } else { _.list.addClass('dragging'); _.touchObject.startX = _.touchObject. curX = event.clientX; _.touchObject.startY = _.touchObject. curY = event.clientY; } } else { _.touchObject = {}; } }; Slick.prototype.swipeMove = function (event) { var _ = this, curLeft, newLeft = null, touches; touches = event.originalEvent.touches; curLeft = ((_.currentSlide * _.slideWidth) * -1) + _.slideOffset; if ((touches && touches.length === 1) || event. data.kind ==='drag') { if (event.data.kind === 'touch') { _.touchObject.curX = touches[0].pageX; _.touchObject.curY = touches[0].pageY; } else { _.touchObject.curX = event.clientX; _.touchObject.curY = event.clientY; } _.touchObject.swipeLength = Math.round(Math.sqrt( Math.pow(_.touchObject.curX - _.touchObject .startX, 2))); if (_.swipeDirection() !== 'up' && _.swipeDirection() !== 'down' && _.options.touchMove === true && _.options.fade === false) { event.originalEvent.preventDefault(); if (_.touchObject.curX > _.touchObject .startX) { _.setLeft(curLeft + _.touchObject .swipeLength); _.swipeLeft = newLeft; } else { _.setLeft(curLeft - _.touchObject .swipeLength); _.swipeLeft = newLeft; } } } else { _.touchObject = {}; } }; Slick.prototype.swipeEnd = function (event) { var _ = this; if ((_.touchObject.fingerCount === 0 && _.touchObject .curX !== 0) || event.data.kind === 'drag') { if (_.touchObject.swipeLength >= _.touchObject .minSwipe) { switch (_.swipeDirection()) { case 'left': _.slideHandler(_.currentSlide + _.options.slidesToScroll); _.touchObject = {}; break; case 'right': _.slideHandler(_.currentSlide - _.options.slidesToScroll); _.touchObject = {}; break; } } else { _.slideHandler(_.currentSlide); _.touchObject = {}; } if (event.data.kind === 'drag') { _.list.removeClass('dragging'); } } else { _.touchObject = {}; } }; Slick.prototype.swipeCancel = function () { var _ = this; _.list.removeClass('dragging'); if (_.touchObject.startX) { _.slideHandler(_.currentSlide); _.touchObject = {}; } }; Slick.prototype.keyHandler = function (event) { var _ = this; if (event.keyCode === 37) { _.changeSlide({data: {message: 'previous'}}); } else if (event.keyCode === 39) { _.changeSlide({data: {message: 'next'}}); } }; Slick.prototype.swipeHandler = function (event) { var _ = this; if (event.data.kind === 'touch') { _.touchObject.fingerCount = event.originalEvent.touches .length; } _.touchObject.minSwipe = _.slideWidth / _.options .touchThreshold; switch (event.data.action) { case 'start': _.swipeStart(event); break; case 'move': _.swipeMove(event); break; case 'end': _.swipeEnd(event); break; case 'cancel': _.swipeCancel(); break; } }; Slick.prototype.swipeDirection = function () { var xDist, yDist, r, swipeAngle, _ = this; 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)) { return 'left'; } if ((swipeAngle <= 360) && (swipeAngle >= 315)) { return 'left'; } if ((swipeAngle >= 135) && (swipeAngle <= 225)) { return 'right'; } if ((swipeAngle > 45) && (swipeAngle < 135)) { return 'down'; } return 'up'; }; Slick.prototype.refresh = function () { var _ = this; _.destroy(); $.extend(_, _.initials); _.init(); }; Slick.prototype.unload = function () { var _ = this; $('.slick-cloned', _.slider).remove(); $('.slick-placeholder', _.slider).remove(); if (_.dots) { _.dots.remove(); } if (_.prevArrow) { _.prevArrow.remove(); _.nextArrow.remove(); } _.slides.removeClass( 'slick-slide slick-active slick-visible').removeAttr('style'); }; Slick.prototype.reinit = function () { var _ = this; _.slides = $(_.options.slide + ':not(.slick-cloned)', _.slideTrack).addClass( 'slick-slide'); _.slideCount = _.slides.length; if(_.currentSlide >= _.slideCount && _.currentSlide !== 0) { _.currentSlide = _.currentSlide - _.options.slidesToScroll; } _.setupPlaceholders(); _.setupInfinite(); _.buildArrows(); _.updateArrows(); _.initArrowEvents(); _.buildDots(); _.updateDots(); _.initDotEvents(); _.setSlideClasses(0); _.setPosition(); }; Slick.prototype.destroy = function () { var _ = this; $('.slick-cloned', _.slider).remove(); $('.slick-placeholder', _.slider).remove(); if (_.dots) { _.dots.remove(); } if (_.prevArrow) { _.prevArrow.remove(); _.nextArrow.remove(); } _.slides.unwrap().unwrap(); _.slides.removeClass( 'slick-slide slick-active slick-visible').removeAttr('style'); _.slider.removeClass('slick-slider'); _.slider.removeClass('slick-initialized'); }; $.fn.slick = function (options) { var _ = this; return _.each(function (index, element) { element.slick = new Slick(element, options); }); }; $.fn.slickAdd = function (slide) { var _ = this; return _.each(function (index, element) { element.slick.addSlide(slide); }); }; $.fn.slickRemove = function (slide) { var _ = this; return _.each(function (index, element) { element.slick.removeSlide(slide); }); }; $.fn.slickFilter = function (filter) { var _ = this; return _.each(function (index, element) { element.slick.filterSlides(filter); }); }; $.fn.slickUnfilter = function () { var _ = this; return _.each(function (index, element) { element.slick.unfilterSlides(); }); }; $.fn.slickGoTo = function (slide) { var _ = this; return _.each(function (index, element) { element.slick.slideHandler(slide); }); }; $.fn.slickNext = function () { var _ = this; return _.each(function (index, element) { element.slick.changeSlide({data: {message: 'next'}}); }); }; $.fn.slickPrev = function () { var _ = this; return _.each(function (index, element) { element.slick.changeSlide({data: {message: 'previous'}}); }); }; $.fn.slickPause = function () { var _ = this; return _.each(function (index, element) { element.slick.autoPlayClear(); }); }; $.fn.slickPlay = function () { var _ = this; return _.each(function (index, element) { element.slick.autoPlay(); }); }; $.fn.unslick = function () { var _ = this; return _.each(function (index, element) { element.slick.destroy(); }); }; }));