You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

10 lines
23 KiB
JavaScript

3 years ago
/*!
* Viewer v0.6.0
* https://github.com/fengyuanchen/viewer
*
* Copyright (c) 2014-2017 Fengyuan Chen
* Released under the MIT license
*
* Date: 2017-10-07T09:53:36.889Z
*/
!function(i,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e(i.jQuery)}(this,function(i){"use strict";function e(i){return"string"==typeof i}function t(i){return"number"==typeof i&&!C(i)}function s(i){return void 0===i}function n(i,e){for(var t=arguments.length,s=Array(t>2?t-2:0),n=2;n<t;n++)s[n-2]=arguments[n];return function(){for(var t=arguments.length,n=Array(t),a=0;a<t;a++)n[a]=arguments[a];return i.apply(e,s.concat(n))}}function a(i){var e=i.rotate,s=i.scaleX,n=i.scaleY,a=[];return t(e)&&0!==e&&a.push("rotate("+e+"deg)"),t(s)&&1!==s&&a.push("scaleX("+s+")"),t(n)&&1!==n&&a.push("scaleY("+n+")"),a.length>0?a.join(" "):"none"}function o(i){return e(i)?i.replace(/^.*\//,"").replace(/[?&#].*$/,""):""}function r(i,e){if(i.naturalWidth)e(i.naturalWidth,i.naturalHeight);else{var t=document.createElement("img");t.onload=function(){e(t.width,t.height)},t.src=i.src}}function h(i){switch(i){case 2:return g;case 3:return w;case 4:return m;default:return""}}function l(e){var t=i.extend({},e),s=[];return i.each(e,function(e,n){delete t[e],i.each(t,function(i,e){var t=Math.abs(n.startX-e.startX),a=Math.abs(n.startY-e.startY),o=Math.abs(n.endX-e.endX),r=Math.abs(n.endY-e.endY),h=Math.sqrt(t*t+a*a),l=(Math.sqrt(o*o+r*r)-h)/h;s.push(l)})}),s.sort(function(i,e){return Math.abs(i)<Math.abs(e)}),s[0]}function d(e,t){var s=e.pageX,n=e.pageY,a={endX:s,endY:n};return t?a:i.extend({startX:s,startY:n},a)}function c(e){var t=0,s=0,n=0;return i.each(e,function(i,e){var a=e.startX,o=e.startY;t+=a,s+=o,n+=1}),t/=n,s/=n,{pageX:t,pageY:s}}function u(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}i=i&&i.hasOwnProperty("default")?i.default:i;var v={inline:!1,button:!0,navbar:!0,title:!0,toolbar:!0,tooltip:!0,movable:!0,zoomable:!0,rotatable:!0,scalable:!0,transition:!0,fullscreen:!0,keyboard:!0,interval:5e3,minWidth:200,minHeight:100,zoomRatio:.1,minZoomRatio:.01,maxZoomRatio:100,zIndex:2015,zIndexInline:0,url:"src",ready:null,show:null,shown:null,hide:null,hidden:null,view:null,viewed:null},f=window.PointerEvent,m="viewer-hide-md-down",w="viewer-hide-sm-down",g="viewer-hide-xs-down",p="viewer-in",b="viewer-transition",y=f?"pointerdown":"touchstart mousedown",x=f?"pointermove":"mousemove touchmove",$=f?"pointerup pointercancel":"touchend touchcancel mouseup",C=Number.isNaN||window.isNaN,z=Object.keys||function(e){var t=[];return i.each(e,function(i){t.push(i)}),t},k={render:function(){this.initContainer(),this.initViewer(),this.initList(),this.renderViewer()},initContainer:function(){var e=i(window);this.container={width:e.innerWidth(),height:e.innerHeight()}},initViewer:function(){var e=this.options,t=this.$parent,s=void 0;e.inline&&(s={width:Math.max(t.width(),e.minWidth),height:Math.max(t.height(),e.minHeight)},this.parent=s),!this.fulled&&s||(s=this.container),this.viewer=i.extend({},s)},renderViewer:function(){this.options.inline&&!this.fulled&&this.$viewer.css(this.viewer)},initList:function(){var t=this.$element,s=this.options,n=this.$list,a=[];this.$images.each(function(t,n){var r=n.alt||o(n),h=n.src,l=s.url;h&&(e(l)?l=n.getAttribute(l):i.isFunction(l)&&(l=l.call(n,n)),a.push('<li><img src="'+h+'" data-action="view" data-index="'+t+'" data-original-url="'+(l||h)+'" alt="'+r+'"></li>'))}),n.html(a.join("")).find("img").one("load",{filled:!0},i.proxy(this.loadImage,this)),this.$items=n.children(),s.transition&&t.one("viewed",function(){n.addClass(b)})},renderList:function(i){var e=i||this.index,t=this.$items.eq(e).width(),s=t+1;this.$list.css({width:s*this.length,marginLeft:(this.viewer.width-t)/2-s*e})},resetList:function(){this.$list.empty().removeClass(b).css("margin-left",0)},initImage:function(e){var t=this,s=this.options,n=this.$image,a=this.viewer,o=this.$footer.height(),h=a.width,l=Math.max(a.height-o,o),d=this.image||{};r(n[0],function(n,a){var o=n/a,r=h,c=l;l*o>h?c=h/o:r=l*o;var u={naturalWidth:n,naturalHeight:a,aspectRatio:o,ratio:(r=Math.min(.9*r,n))/n,width:r,height:c=Math.min(.9*c,a),left:(h-r)/2,top:(l-c)