-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsimple-gallery.min.js
17 lines (17 loc) · 3.48 KB
/
simple-gallery.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* simple-gallery.js - v2.6.0
* Author: Alex Kalicki (https://github.com/akalicki)
*
* simple-gallery.js is a lightweight jQuery extension for quickly creating
* highly customizable photo galleries using standard jQuery notation.
*
* All work contained in this file is released under the MIT License.
* Please contact the copyright holder with further questions.
*/
(function(c,d,e,f){c.widget("ak.gallery",{options:{source:"",thumbExt:"",animate:!0,startImg:0,waitTime:5E3,changeTime:700,easing:"swing",restartOnEnd:!0,selectClass:"selected",showCaptions:!1,captionTarget:""},_create:function(){this.images=c(this.options.source);this.nextImg=this.options.startImg;this.element.css({"background-repeat":"no-repeat","background-position":"center",opacity:0});this.images.on("click.gallery",c.proxy(this._onClick,this));this._loadNext()},_destroy:function(){this._trigger("destroy");
this.images.off("click.gallery");this.images.removeClass(this.options.selectClass);d.clearTimeout(this.cycle);this.element.stop(!0);this.options.showCaptions&&c(this.options.captionTarget).stop(!0);this._startTransition();var a=this;this.element.queue(function(b){a.element.css({"background-repeat":"repeat","background-position":"0% 0%","background-image":"none",opacity:1});b()});this._super()},_setOption:function(a,b){this._trigger("optionchange");this.options[a]=b;"source"===a&&(this._trigger("sourcechange"),
d.clearTimeout(this.cycle),this.images.off("click.gallery"),this.images=c(this.options.source),this.images.on("click.gallery",c.proxy(this._onClick,this)),this.nextImg=this.options.startImg,this._changeToImg(this.nextImg))},_loadNext:function(){this.nextImg<this.images.length?this._changeToImg(this.nextImg):this.options.restartOnEnd&&(this.nextImg=0,this._changeToImg(this.nextImg))},_changeToImg:function(a){var b=this;b.element.clearQueue();b._startTransition();b.element.queue(function(c){b._selectImg(a);
c()});b._endTransition();b.options.animate&&b.element.queue(function(a){b.cycle=d.setTimeout(function(){b._loadNext()},b.options.waitTime);a()})},_selectImg:function(a){this._trigger("imageload");var b=this.images.get(a),d=this._removeLast(b.src,this.options.thumbExt);this.element.css("background-image","url("+d+")");this.images.removeClass(this.options.selectClass);b.className+=this.options.selectClass;this.nextImg=a+1;this.options.showCaptions&&(a=b.title,c(this.options.captionTarget).html(a))},
_startTransition:function(){this.element.animate({opacity:0},this.options.changeTime,this.options.easing);this.options.showCaptions&&c(this.options.captionTarget).animate({opacity:0},this.options.changeTime,this.options.easing)},_endTransition:function(){this.element.animate({opacity:1},this.options.changeTime,this.options.easing);this.options.showCaptions&&c(this.options.captionTarget).animate({opacity:1},this.options.changeTime,this.options.easing)},_onClick:function(a){this._trigger("click");d.clearTimeout(this.cycle);
this.element.stop(!0);this.nextImg=this.images.index(c(a.target));this._changeToImg(this.nextImg)},stopAnimation:function(){this._trigger("animationstop");this.options.animate=!1;d.clearTimeout(this.cycle);this.element.stop(!0);this.options.showCaptions&&c(this.options.captionTarget).stop(!0);this._endTransition()},resumeAnimation:function(){var a=this;a._trigger("animationresume");a.options.animate=!0;a.cycle=d.setTimeout(function(){a._loadNext()},a.options.waitTime)},_removeLast:function(a,b){var c=
a.lastIndexOf(b);return-1==c?a:a.substring(0,c)+a.substring(c+b.length)}})})(jQuery,window,document);