This repository has been archived by the owner on Dec 20, 2022. It is now read-only.
/
jquery.photoWall.min.js
11 lines (11 loc) · 5.95 KB
/
jquery.photoWall.min.js
1
2
3
4
5
6
7
8
9
10
11
/*!
* jQuery photoWall.js v2.0.0
* http://jeremyjcpaul.com
* https://github.com/jeremyjcpaul/photowall
*
* Copyright 2015 Jeremy JC Paul
* Released under the MIT license.
* https://github.com/jeremyjcpaul/photowall/blob/master/MIT-LICENSE.txt
*
* Date: 14/12/2015
*/!function(a,b,c,d){"use strict";function e(a,b){a.settings[b]!==d&&a.settings[b].call(a.element)}function f(b){b.jelement.children(".pw-previewer").remove(),b.jelement.children(".pw-slide-group").length>0&&b.jelement.find(".pw-slide").unwrap().removeAttr("data-groupid");var c=b.jelement.width();b.jelement.append('<div class="pw-tempStore" />'),b.jelement.children(".pw-tempStore").append(b.jelement.contents().not(".pw-tempStore"));var d=1,e=0;b.jelement.append('<div class="pw-slide-group pwsg-'+d+'" />'),b.jelement.append('<div class="pw-previewer pw-preview-'+d+' hide" data-groupid="'+d+'"></div>'),b.jelement.children(".pw-tempStore").children(".pw-slide").each(function(){e+a(this).width()<=c?(b.jelement.children(".pwsg-"+d).append(a(this)),e+=a(this).width()):(d++,b.jelement.append('<div class="pw-slide-group pwsg-'+d+'" />'),b.jelement.children(".pwsg-"+d).append(a(this)),e=a(this).width(),b.jelement.append('<div class="pw-previewer pw-preview-'+d+' hide" data-groupid="'+d+'"></div>')),a(this).attr("data-groupid",d)}),b.jelement.children(".pw-tempStore").remove()}function g(b){b.jelement.on("click",".pw-slide",function(){b.pwCurrentSlide=a(this),b.pwCurrentPreviewer=b.pwCurrentSlide.parent().nextAll(".pw-previewer:first");var c=b.jelement.find(".curPreview"),d=b.pwCurrentSlide.attr("data-groupid"),e=-1;c.length>0&&(e=c.attr("data-groupid")),d!=e&&b.jelement.find(".pw-previewer").addClass("hide").removeClass("curPreview").stop().slideUp(b.settings.speed),b.pwCurrentPreviewer.empty(),b.pwCurrentPreviewer.append('<span class="pw-previewer-close">x</span>'),b.jelement.find(".pw-previewer-close").click(function(){b.close()}),b.pwCurrentSlide.children(".pw-image").clone().appendTo(b.pwCurrentPreviewer),b.pwCurrentPreviewer.children(".pw-image").wrapAll('<div class="pw-image-container" />'),b.pwCurrentSlide.children(".pw-image-desc").clone().appendTo(b.pwCurrentPreviewer),b.pwCurrentPreviewer.find(".pw-image").each(function(){var b=a(this);b.data("original").length&&b.attr("src",b.data("original"))}),b.pwCurrentPreviewer.slideDown(b.settings.speed,function(){var c=a(this);a("body").scrollTop()!=c.offset().top-b.settings.topOffset&&a("html,body").animate({scrollTop:c.offset().top-b.settings.topOffset},b.settings.speed)}).removeClass("hide").addClass("curPreview")})}function h(b){a(c).keydown(function(a){switch(a.which){case 27:b.close();break;case 37:b.prev();break;case 39:b.next();break;default:return}a.preventDefault()})}function i(c){var d;a(b).resize(function(){d&&clearTimeout(d),d=setTimeout(function(){d=null,f(c)},500)})}function j(b,c){this.element=b,this.jelement=a(this.element),this.pwCurrentSlide=0,this.pwCurrentPreviewer=0,this.settings=a.extend({},m,c),this._defaults=m,this._name=k,this.init()}var k="photoWall",l="plugin_"+k,m={speed:500,topOffset:30,beforeInit:function(){},afterInit:function(){},beforeNextPrev:function(){},afterNextPrev:function(){},beforeNext:function(){},afterNext:function(){},beforePrev:function(){},afterPrev:function(){},beforeClose:function(){},afterClose:function(){},onDestroy:function(){}};a.extend(j.prototype,{init:function(){var c=this;e(this,"beforeInit"),a(b).load(function(){c.jelement.children("div").addClass("pw-slide"),c.jelement.children(".pw-slide").children("img").addClass("pw-image"),c.jelement.children(".pw-slide").children("div").addClass("pw-image-desc");c.jelement.width();f(c),g(c),h(c),i(c),e(c,"afterInit")})},option:function(a,b){return b?void(this.settings[a]=b):this.settings[a]},select:function(a){this.jelement.find(".pw-slide:eq("+a.toString()+")").click()},selectById:function(a){this.jelement.find(".pw-slide#"+a.toString()).click()},selectFirst:function(){this.jelement.find(".pw-slide:first").click()},selectLast:function(){this.jelement.find(".pw-slide:last").click()},close:function(){var b=this;e(this,"beforeClose"),this.pwCurrentSlide=0,this.pwCurrentPreviewer.empty(),this.pwCurrentPreviewer=0,this.jelement.find(".pw-previewer").stop().slideUp(this.settings.speed,function(){a(this).addClass("hide"),e(b,"afterClose")})},next:function(){if(e(this,"beforeNext"),e(this,"beforeNextPrev"),0==this.pwCurrentSlide.next().length){var a=this.pwCurrentSlide.parent().nextAll(".pw-slide-group:first");0==a.length?this.jelement.find(".pw-slide:first").click():a.children(".pw-slide:first").click()}else this.pwCurrentSlide=this.pwCurrentSlide.nextAll(".pw-slide:first"),this.pwCurrentPreviewer.children(".pw-image-container").empty().append(this.pwCurrentSlide.children(".pw-image").clone()),this.pwCurrentPreviewer.children(".pw-image-desc").html(this.pwCurrentSlide.children(".pw-image-desc").html());e(this,"afterNext"),e(this,"afterNextPrev")},prev:function(){if(e(this,"beforePrev"),e(this,"beforeNextPrev"),0==this.pwCurrentSlide.prev().length){var a=this.pwCurrentSlide.parent().prevAll(".pw-slide-group:first");0==a.length?this.jelement.find(".pw-slide:last").click():a.children(".pw-slide:last").click()}else this.pwCurrentSlide=this.pwCurrentSlide.prevAll(".pw-slide:first"),this.pwCurrentPreviewer.children(".pw-image-container").empty().append(this.pwCurrentSlide.children(".pw-image").clone()),this.pwCurrentPreviewer.children(".pw-image-desc").html(this.pwCurrentSlide.children(".pw-image-desc").html());e(this,"afterPrev"),e(this,"afterNextPrev")},destroy:function(){var b=this;this.jelement.each(function(){b.jelement=a(this),b.jelement.children(".pw-previewer").remove(),b.jelement.find(".pw-slide").unwrap().unbind().removeAttr("data-groupid").removeClass("pw-slide"),b.jelement.find(".pw-image").removeClass("pw-image"),b.jelement.find(".pw-image-desc").removeClass("pw-image-desc"),e(b,"onDestroy"),b.jelement.removeData(l)})}}),a.fn[k]=function(a){var b=this.data(l);return b instanceof j?"undefined"!=typeof a&&b.init(a):(b=new j(this,a),this.data(l,b)),b}}(jQuery,window,document);