UNPKG

viewerjs-optimize

Version:
10 lines 32 kB
/*! * ViewerOptimize.js v1.3.21 * https://github.com/ThinkDuan/viewerjs-optimize * * Copyright 2022 ThinkDuan * Released under the MIT license * * Date: 2022-06-20T12:39:55.833Z */ !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t=t||self).ViewerOptimize=i()}(this,function(){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}var h={backdrop:!0,button:!0,navbar:!0,title:!0,toolbar:!0,className:"",container:"body",filter:null,fullscreen:!0,initialViewIndex:0,inline:!1,interval:5e3,keyboard:!0,loading:!0,loop:!0,minWidth:200,minHeight:100,movable:!0,zoomable:!0,rotatable:!0,scalable:!0,toggleOnDblclick:!0,tooltip:!0,transition:!0,zIndex:2015,zIndexInline:0,zoomRatio:.1,minZoomRatio:.01,maxZoomRatio:100,url:"src",ready:null,show:null,shown:null,hide:null,hidden:null,view:null,viewed:null,zoom:null,zoomed:null},t="undefined"!=typeof window,i=t?window:{},a=t&&"ontouchstart"in i.document.documentElement,e=t&&"PointerEvent"in i,g="viewer",l="move",W="switch",c="zoom",m="".concat(g,"-active"),A="".concat(g,"-close"),f="".concat(g,"-fade"),P="".concat(g,"-fixed"),H="".concat(g,"-fullscreen"),j="".concat(g,"-fullscreen-exit"),v="".concat(g,"-hide"),V="".concat(g,"-hide-md-down"),B="".concat(g,"-hide-sm-down"),U="".concat(g,"-hide-xs-down"),d="".concat(g,"-in"),p="".concat(g,"-invisible"),w="".concat(g,"-loading"),K="".concat(g,"-move"),Z="".concat(g,"-open"),u="".concat(g,"-show"),b="".concat(g,"-transition"),y="click",$="dblclick",_="dragstart",G="hidden",J="hide",Q="keydown",x="load",tt=e?"pointerdown":a?"touchstart":"mousedown",it=e?"pointermove":a?"touchmove":"mousemove",et=e?"pointerup pointercancel":a?"touchend touchcancel":"mouseup",nt="ready",st="resize",ot="show",at="shown",r="transitionend",rt="view",k="viewed",ht="wheel",lt="".concat(g,"Action"),ct=/\s\s*/,z=["zoom-in","zoom-out","one-to-one","reset","prev","play","next","rotate-left","rotate-right","flip-horizontal","flip-vertical"];function T(t){return"string"==typeof t}var dt=Number.isNaN||i.isNaN;function D(t){return"number"==typeof t&&!dt(t)}function I(t){return void 0===t}function s(t){return"object"===n(t)&&null!==t}var ut=Object.prototype.hasOwnProperty;function mt(t){if(!s(t))return!1;try{var i=t.constructor,e=i.prototype;return i&&e&&ut.call(e,"isPrototypeOf")}catch(t){return!1}}function E(t){return"function"==typeof t}function S(i,e){if(i&&E(e))if(Array.isArray(i)||D(i.length))for(var t=i.length,n=0;n<t&&!1!==e.call(i,i[n],n,i);n+=1);else s(i)&&Object.keys(i).forEach(function(t){e.call(i,i[t],t,i)})}var C=Object.assign||function(e){for(var t=arguments.length,i=new Array(1<t?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return s(e)&&0<i.length&&i.forEach(function(i){s(i)&&Object.keys(i).forEach(function(t){e[t]=i[t]})}),e},gt=/^(?:width|height|left|top|marginLeft|marginTop)$/;function N(t,i){var e=t.style;S(i,function(t,i){gt.test(i)&&D(t)&&(t+="px"),e[i]=t})}function L(t){return T(t)?t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):t}function ft(t,i){return t.classList?t.classList.contains(i):-1<t.className.indexOf(i)}function M(t,i){var e;i&&(D(t.length)?S(t,function(t){M(t,i)}):t.classList?t.classList.add(i):(e=t.className.trim())?e.indexOf(i)<0&&(t.className="".concat(e," ").concat(i)):t.className=i)}function Y(t,i){i&&(D(t.length)?S(t,function(t){Y(t,i)}):t.classList?t.classList.remove(i):0<=t.className.indexOf(i)&&(t.className=t.className.replace(i,"")))}function X(t,i,e){i&&(D(t.length)?S(t,function(t){X(t,i,e)}):(e?M:Y)(t,i))}var vt=/([a-z\d])([A-Z])/g;function pt(t){return t.replace(vt,"$1-$2").toLowerCase()}function q(t,i){return s(t[i])?t[i]:t.dataset?t.dataset[i]:t.getAttribute("data-".concat(pt(i)))}function wt(t,i,e){s(e)?t[i]=e:t.dataset?t.dataset[i]=e:t.setAttribute("data-".concat(pt(i)),e)}yt=!1,t&&(bt=!1,e=function(){},t=Object.defineProperty({},"once",{get:function(){return yt=!0,bt},set:function(t){bt=t}}),i.addEventListener("test",e,t),i.removeEventListener("test",e,t));var bt,yt,xt=yt;function O(e,t,n,i){var s=3<arguments.length&&void 0!==i?i:{},o=n;t.trim().split(ct).forEach(function(t){var i;xt||(i=e.listeners)&&i[t]&&i[t][n]&&(o=i[t][n],delete i[t][n],0===Object.keys(i[t]).length&&delete i[t],0===Object.keys(i).length&&delete e.listeners),e.removeEventListener(t,o,s)})}function R(o,t,a,i){var r=3<arguments.length&&void 0!==i?i:{},h=a;t.trim().split(ct).forEach(function(n){var t,s;r.once&&!xt&&(t=o.listeners,h=function(){delete s[n][a],o.removeEventListener(n,h,r);for(var t=arguments.length,i=new Array(t),e=0;e<t;e++)i[e]=arguments[e];a.apply(o,i)},(s=void 0===t?{}:t)[n]||(s[n]={}),s[n][a]&&o.removeEventListener(n,s[n][a],r),s[n][a]=h,o.listeners=s),o.addEventListener(n,h,r)})}function F(t,i,e){var n;return E(Event)&&E(CustomEvent)?n=new CustomEvent(i,{detail:e,bubbles:!0,cancelable:!0}):(n=document.createEvent("CustomEvent")).initCustomEvent(i,!0,!0,e),t.dispatchEvent(n)}function kt(t){var i=t.rotate,e=t.scaleX,n=t.scaleY,s=t.translateX,t=t.translateY,o=[],s=(D(s)&&0!==s&&o.push("translateX(".concat(s,"px)")),D(t)&&0!==t&&o.push("translateY(".concat(t,"px)")),D(i)&&0!==i&&o.push("rotate(".concat(i,"deg)")),D(e)&&1!==e&&o.push("scaleX(".concat(e,")")),D(n)&&1!==n&&o.push("scaleY(".concat(n,")")),o.length?o.join(" "):"none");return{WebkitTransform:s,msTransform:s,transform:s}}var zt=i.navigator&&/(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(i.navigator.userAgent);function Tt(t,i){var e=document.createElement("img");if(t.naturalWidth&&!zt)return i(t.naturalWidth,t.naturalHeight),e;var n=document.body||document.documentElement;return e.onload=function(){i(e.width,e.height),zt||n.removeChild(e)},e.src=t.src,zt||(e.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",n.appendChild(e)),e}function Dt(t){switch(t){case 2:return U;case 3:return B;case 4:return V;default:return""}}function It(t,i){var e=t.pageX,t=t.pageY,n={endX:e,endY:t};return i?n:C({timeStamp:Date.now(),startX:e,startY:t},n)}var e={render:function(){this.initContainer(),this.initViewer(),this.initList(),this.renderViewer()},initContainer:function(){this.containerData={width:window.innerWidth,height:window.innerHeight}},initViewer:function(){var t=this.options,i=this.parent,i=(t.inline&&(e={width:Math.max(i.offsetWidth,t.minWidth),height:Math.max(i.offsetHeight,t.minHeight)},this.parentData=e),document.querySelector("#viewer-canvas")),e={width:Math.max(i.offsetWidth,t.minWidth),height:Math.max(i.offsetHeight,t.minHeight)},i="."+t.className.split(" ")[1],n=document.querySelector(i);n.onmousedown=function(t){var t=t||window.event,i=t.clientX-n.offsetLeft,e=t.clientY-n.offsetTop;document.onmousemove=function(t){t=t||window.event;n.style.left="".concat(t.clientX-i,"px"),n.style.top="".concat(t.clientY-e,"px")},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null}},this.viewerData=C({},e)},renderViewer:function(){this.options.inline&&!this.fulled&&N(this.viewer,this.viewerData)},initList:function(){var o=this,t=this.element,a=this.options,i=this.list,r=[];S(this.images,function(t,i){var e=L(t.src),n=L(t.alt||(T(n=e)?n.replace(/^.*\//,"").replace(/[?&#].*$/,""):"")),s=a.url;T(s)?s=L(t.getAttribute(s)):E(s)&&(s=L(s.call(o,t))),(e||s)&&r.push("<li><img"+' src="'.concat(e||s,'"')+' role="button" data-viewer-action="view"'+' data-index="'.concat(i,'"')+' data-original-url="'.concat(s||e,'"')+' alt="'.concat(n,'"')+"></li>")}),i.innerHTML=r.join(""),this.items=i.getElementsByTagName("li"),S(this.items,function(i){var t=i.firstElementChild;wt(t,"filled",!0),a.loading&&M(i,w),R(t,x,function(t){a.loading&&Y(i,w),o.loadImage(t)},{once:!0})}),a.transition&&R(t,k,function(){M(i,b)},{once:!0})},renderList:function(t){t=t||this.index,t=this.items[t].offsetWidth||30;N(this.list,C({width:(t+1)*this.length},kt({translateX:0})))},resetList:function(){var t=this.list;t.innerHTML="",Y(t,b),N(t,kt({translateX:0}))},initImage:function(o){var t,a=this,r=this.options,i=this.image,e=this.viewerData,n=this.footer.offsetHeight,h=e.width,l=Math.max(e.height-n,n),c=this.imageData||{};this.imageInitializing={abort:function(){t.onload=null}},t=Tt(i,function(t,i){var e=t/i,n=h,s=l,e=(a.imageInitializing=!1,h<l*e?s=h/e:n=l*e,{naturalWidth:t,naturalHeight:i,aspectRatio:e,ratio:(n=Math.min(.9*n,t))/t,width:n,height:s=Math.min(.9*s,i),left:(h-n)/2,top:(l-s)/2}),t=C({},e);r.rotatable&&(e.rotate=c.rotate||0,t.rotate=0),r.scalable&&(e.scaleX=c.scaleX||1,e.scaleY=c.scaleY||1,t.scaleX=1,t.scaleY=1),a.imageData=e,a.initialImageData=t,o&&o()})},renderImage:function(t){var i,e=this,n=this.image,s=this.imageData;N(n,C({width:s.width,height:s.height,marginLeft:s.left,marginTop:s.top},kt(s))),t&&((this.viewing||this.zooming)&&this.options.transition?(i=function(){e.imageRendering=!1,t()},this.imageRendering={abort:function(){O(n,r,i)}},R(n,r,i,{once:!0})):t())},resetImage:function(){var t;(this.viewing||this.viewed)&&(t=this.image,this.viewing&&this.viewing.abort(),t.parentNode.removeChild(t),this.image=null)}},t={bind:function(){var t=this.options,i=this.viewer,e=this.canvas,n=this.element.ownerDocument;R(i,y,this.onClick=this.click.bind(this)),R(i,ht,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),R(i,_,this.onDragStart=this.dragstart.bind(this)),R(e,tt,this.onPointerDown=this.pointerdown.bind(this)),R(n,it,this.onPointerMove=this.pointermove.bind(this)),R(n,et,this.onPointerUp=this.pointerup.bind(this)),R(n,Q,this.onKeyDown=this.keydown.bind(this)),R(window,st,this.onResize=this.resize.bind(this)),t.toggleOnDblclick&&R(e,$,this.onDblclick=this.dblclick.bind(this))},unbind:function(){var t=this.options,i=this.viewer,e=this.canvas,n=this.element.ownerDocument;O(i,y,this.onClick),O(i,ht,this.onWheel,{passive:!1,capture:!0}),O(i,_,this.onDragStart),O(e,tt,this.onPointerDown),O(n,it,this.onPointerMove),O(n,et,this.onPointerUp),O(n,Q,this.onKeyDown),O(window,st,this.onResize),t.toggleOnDblclick&&O(e,$,this.onDblclick)}},Et={click:function(t){var i=t.target,e=this.options,n=this.imageData,s=q(i,lt);switch(a&&t.isTrusted&&i===this.canvas&&clearTimeout(this.clickCanvasTimeout),s){case"mix":this.played?this.stop():e.inline?this.fulled?this.exit():this.full():this.hide();break;case"hide":this.hide();break;case"view":this.view(q(i,"index"));break;case"zoom-in":this.zoom(.1,!0);break;case"zoom-out":this.zoom(-.1,!0);break;case"one-to-one":this.toggle();break;case"reset":this.reset();break;case"prev":this.prev(e.loop);break;case"play":this.play(e.fullscreen);break;case"next":this.next(e.loop);break;case"rotate-left":this.rotate(-90);break;case"rotate-right":this.rotate(90);break;case"flip-horizontal":this.scaleX(-n.scaleX||-1);break;case"flip-vertical":this.scaleY(-n.scaleY||-1);break;default:this.played&&this.stop()}},dblclick:function(t){t.preventDefault(),this.viewed&&t.target===this.image&&(a&&t.isTrusted&&clearTimeout(this.doubleClickImageTimeout),this.toggle())},load:function(){var t=this,i=(this.timeout&&(clearTimeout(this.timeout),this.timeout=!1),this.element),e=this.options,n=this.image,s=this.index,o=this.viewerData;Y(n,p),e.loading&&Y(this.canvas,w),n.style.cssText="height:0;"+"margin-left:".concat(o.width/2,"px;")+"margin-top:".concat(o.height/2,"px;")+"max-width:none!important;position:absolute;width:0;",this.initImage(function(){X(n,K,e.movable),X(n,b,e.transition),t.renderImage(function(){t.viewed=!0,t.viewing=!1,E(e.viewed)&&R(i,k,e.viewed,{once:!0}),F(i,k,{originalImage:t.images[s],index:s,image:n})})})},loadImage:function(t){var n=t.target,t=n.parentNode,s=t.offsetWidth||30,o=t.offsetHeight||50,a=!!q(n,"filled");Tt(n,function(t,i){var t=t/i,i=s,e=o;s<o*t?a?i=o*t:e=s/t:a?e=s/t:i=o*t,N(n,C({width:i,height:e},kt({translateX:(s-i)/2,translateY:(o-e)/2})))})},keydown:function(t){var i=this.options;if(this.fulled&&i.keyboard)switch(t.keyCode||t.which||t.charCode){case 27:this.played?this.stop():i.inline?this.fulled&&this.exit():this.hide();break;case 32:this.played&&this.stop();break;case 37:this.prev(i.loop);break;case 38:t.preventDefault(),this.zoom(i.zoomRatio,!0);break;case 39:this.next(i.loop);break;case 40:t.preventDefault(),this.zoom(-i.zoomRatio,!0);break;case 48:case 49:t.ctrlKey&&(t.preventDefault(),this.toggle())}},dragstart:function(t){"img"===t.target.tagName.toLowerCase()&&t.preventDefault()},pointerdown:function(t){var i=this.options,e=this.pointers,n=t.buttons,s=t.button;!this.viewed||this.showing||this.viewing||this.hiding||D(n)&&1!==n||D(s)&&0!==s||t.ctrlKey||(t.preventDefault(),t.changedTouches?S(t.changedTouches,function(t){e[t.identifier]=It(t)}):e[t.pointerId||0]=It(t),n=!!i.movable&&l,1<Object.keys(e).length?n=c:"touch"!==t.pointerType&&"touchstart"!==t.type||!this.isSwitchable()||(n=W),!i.transition||n!==l&&n!==c||Y(this.image,b),this.action=n)},pointermove:function(t){var i=this.pointers,e=this.action;this.viewed&&e&&(t.preventDefault(),t.changedTouches?S(t.changedTouches,function(t){C(i[t.identifier]||{},It(t,!0))}):C(i[t.pointerId||0]||{},It(t,!0)),this.change(t))},pointerup:function(t){var i,e=this,n=this.options,s=this.action,o=this.pointers;t.changedTouches?S(t.changedTouches,function(t){i=o[t.identifier],delete o[t.identifier]}):(i=o[t.pointerId||0],delete o[t.pointerId||0]),s&&(t.preventDefault(),!n.transition||s!==l&&s!==c||M(this.image,b),this.action=!1,a&&s!==c&&i&&Date.now()-i.timeStamp<500&&(clearTimeout(this.clickCanvasTimeout),clearTimeout(this.doubleClickImageTimeout),n.toggleOnDblclick&&this.viewed&&t.target===this.image?this.imageClicked?(this.imageClicked=!1,this.doubleClickImageTimeout=setTimeout(function(){F(e.image,$)},50)):(this.imageClicked=!0,this.doubleClickImageTimeout=setTimeout(function(){e.imageClicked=!1},500)):(this.imageClicked=!1,n.backdrop&&"static"!==n.backdrop&&t.target===this.canvas&&(this.clickCanvasTimeout=setTimeout(function(){F(e.canvas,y)},50)))))},resize:function(){var i=this;this.isShown&&!this.hiding&&(this.initContainer(),this.initViewer(),this.renderViewer(),this.renderList(),this.viewed&&this.initImage(function(){i.renderImage()}),this.played&&(this.options.fullscreen&&this.fulled&&!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)?this.stop():S(this.player.getElementsByTagName("img"),function(t){R(t,x,i.loadImage.bind(i),{once:!0}),F(t,x)})))},wheel:function(t){var i,e,n=this;this.viewed&&(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout(function(){n.wheeling=!1},50),i=Number(this.options.zoomRatio)||.1,e=1,t.deltaY?e=0<t.deltaY?1:-1:t.wheelDelta?e=-t.wheelDelta/120:t.detail&&(e=0<t.detail?1:-1),this.zoom(-e*i,!0,t)))}},St={show:function(){var t=0<arguments.length&&void 0!==arguments[0]&&arguments[0],i=this.element,e=this.options;if(e.inline||this.showing||this.isShown||this.showing)return this;if(!this.ready)return this.build(),this.ready&&this.show(t),this;if(E(e.show)&&R(i,ot,e.show,{once:!0}),!1===F(i,ot)||!this.ready)return this;this.hiding&&this.transitioning.abort(),this.showing=!0,this.open();var n,s=this.viewer;return Y(s,v),e.transition&&!t?(n=this.shown.bind(this),this.transitioning={abort:function(){O(s,r,n),Y(s,d)}},M(s,b),s.offsetWidth,R(s,r,n,{once:!0}),M(s,d)):(M(s,d),this.shown()),this},hide:function(){var t=0<arguments.length&&void 0!==arguments[0]&&arguments[0],i=this.element,e=this.options;if(e.inline||this.hiding||!this.isShown&&!this.showing)return this;if(E(e.hide)&&R(i,J,e.hide,{once:!0}),!1===F(i,J))return this;this.showing&&this.transitioning.abort(),this.hiding=!0,this.played?this.stop():this.viewing&&this.viewing.abort();var n,s,o=this.viewer;return e.transition&&!t?(n=this.hidden.bind(this),s=function(){R(o,r,n,{once:!0}),Y(o,d)},this.transitioning={abort:function(){this.viewed?O(this.image,r,s):O(o,r,n)}},this.viewed&&ft(this.image,b)?(R(this.image,r,s,{once:!0}),this.zoomTo(0,!1,!1,!0)):s()):(Y(o,d),this.hidden()),this.viewer&&this.viewer.parentNode&&this.viewer.parentNode.removeChild(this.viewer),this},view:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.options.initialViewIndex,t=Number(t)||0;if(!this.isShown)return this.index=t,this.show();if(this.hiding||this.played||t<0||t>=this.length||this.viewed&&t===this.index)return this;this.viewing&&this.viewing.abort();var i=this.element,n=this.options,s=this.title,o=this.canvas,a=this.items[t],r=a.querySelector("img"),h=L(q(r,"originalUrl")),l=L(r.getAttribute("alt")),c=document.createElement("img");if(-1<h.indexOf("-thumb")&&(h=h.replace("-thumb","")),this.options.viewImageUrlParams&&(h+="/".concat(this.options.viewImageUrlParams)),c.src=h,c.alt=l,E(n.view)&&R(i,rt,n.view,{once:!0}),!1===F(i,rt,{originalImage:this.images[t],index:t,image:c})||!this.isShown||this.hiding||this.played)return this;this.image=c,Y(this.items[this.index],m),M(a,m),this.viewed=!1,this.index=t,this.imageData={},M(c,p),n.loading&&M(o,w),o.innerHTML="",o.appendChild(c),this.renderList(),s.innerHTML="";function d(){var t=e.imageData,i=Array.isArray(n.title)?n.title[1]:n.title;s.innerHTML=L(E(i)?i.call(e,c,t):"".concat(l," (").concat(t.naturalWidth," × ").concat(t.naturalHeight,")"))}var u;return R(i,k,d,{once:!0}),this.viewing={abort:function(){O(i,k,d),c.complete?this.imageRendering?this.imageRendering.abort():this.imageInitializing&&this.imageInitializing.abort():(c.src="",O(c,x,u),this.timeout&&clearTimeout(this.timeout))}},c.complete?this.load():(R(c,x,u=this.load.bind(this),{once:!0}),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(function(){Y(c,p),e.timeout=!1},1e3)),this},prev:function(){var t=this.index-1;return t<0&&(t=0<arguments.length&&void 0!==arguments[0]&&arguments[0]?this.length-1:0),this.view(t),this},next:function(){var t=this.length-1,i=this.index+1;return this.view(i=t<i?0<arguments.length&&void 0!==arguments[0]&&arguments[0]?0:t:i),this},move:function(t,i){var e=this.imageData;return this.moveTo(I(t)?t:e.left+Number(t),I(i)?i:e.top+Number(i)),this},moveTo:function(t){var i,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:t,n=this.imageData;return t=Number(t),e=Number(e),this.viewed&&!this.played&&this.options.movable&&(i=!1,D(t)&&(n.left=t,i=!0),D(e)&&(n.top=e,i=!0),i&&this.renderImage()),this},zoom:function(t){var i=1<arguments.length&&void 0!==arguments[1]&&arguments[1],e=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,n=this.imageData;return t=Number(t),this.zoomTo(n.width*(t=t<0?1/(1-t):1+t)/n.naturalWidth,i,e),this},zoomTo:function(t){var e,n,s,i=this,o=1<arguments.length&&void 0!==arguments[1]&&arguments[1],a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,r=3<arguments.length&&void 0!==arguments[3]&&arguments[3],h=this.element,l=this.options,c=this.pointers,d=this.imageData,u=d.width,m=d.height,g=d.left,f=d.top,v=d.naturalWidth,p=d.naturalHeight;if(D(t=Math.max(0,t))&&this.viewed&&!this.played&&(r||l.zoomable)){r||(r=Math.max(.01,l.minZoomRatio),w=Math.min(100,l.maxZoomRatio),t=Math.min(Math.max(t,r),w));var r=v*(t=a&&.95<t&&t<1.05?1:t),w=p*t,p=r-u,b=w-m,y=u/v;if(E(l.zoom)&&R(h,"zoom",l.zoom,{once:!0}),!1===F(h,"zoom",{ratio:t,oldRatio:y,originalEvent:a}))return this;this.zooming=!0,a?(v={left:(v=(v=this.viewer).getBoundingClientRect()).left+(window.pageXOffset-document.documentElement.clientLeft),top:v.top+(window.pageYOffset-document.documentElement.clientTop)},c=c&&Object.keys(c).length?(s=n=e=0,S(c,function(t){var i=t.startX,t=t.startY;e+=i,n+=t,s+=1}),{pageX:e/=s,pageY:n/=s}):{pageX:a.pageX,pageY:a.pageY},d.left-=(c.pageX-v.left-g)/u*p,d.top-=(c.pageY-v.top-f)/m*b):(d.left-=p/2,d.top-=b/2),d.width=r,d.height=w,d.ratio=t,this.renderImage(function(){i.zooming=!1,E(l.zoomed)&&R(h,"zoomed",l.zoomed,{once:!0}),F(h,"zoomed",{ratio:t,oldRatio:y,originalEvent:a})}),o&&this.tooltip()}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t)),this},rotateTo:function(t){var i=this.imageData;return D(t=Number(t))&&this.viewed&&!this.played&&this.options.rotatable&&(i.rotate=t,this.renderImage()),this},scaleX:function(t){return this.scale(t,this.imageData.scaleY),this},scaleY:function(t){return this.scale(this.imageData.scaleX,t),this},scale:function(t){var i,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:t,n=this.imageData;return t=Number(t),e=Number(e),this.viewed&&!this.played&&this.options.scalable&&(i=!1,D(t)&&(n.scaleX=t,i=!0),D(e)&&(n.scaleY=e,i=!0),i&&this.renderImage()),this},play:function(){var i=this,t=0<arguments.length&&void 0!==arguments[0]&&arguments[0];if(!this.isShown||this.played)return this;var s=this.options,o=this.player,a=this.loadImage.bind(this),r=[],h=0,l=0;return this.played=!0,this.onLoadWhenPlay=a,t&&this.requestFullscreen(),M(o,u),S(this.items,function(t,i){var e=t.querySelector("img"),n=document.createElement("img");n.src=L(q(e,"originalUrl")),n.alt=L(e.getAttribute("alt")),h+=1,M(n,f),X(n,b,s.transition),ft(t,m)&&(M(n,d),l=i),r.push(n),R(n,x,a,{once:!0}),o.appendChild(n)}),D(s.interval)&&0<s.interval&&1<h&&function t(){i.playing=setTimeout(function(){Y(r[l],d),M(r[l=(l+=1)<h?l:0],d),t()},s.interval)}(),this},stop:function(){var i=this;if(!this.played)return this;var t=this.player;return this.played=!1,clearTimeout(this.playing),S(t.getElementsByTagName("img"),function(t){O(t,x,i.onLoadWhenPlay)}),Y(t,u),t.innerHTML="",this.exitFullscreen(),this},full:function(){var t=this,i=this.options,e=this.viewer,n=this.image,s=this.list;return!this.isShown||this.played||this.fulled||!i.inline||(this.fulled=!0,this.open(),M(this.button,j),i.transition&&(Y(s,b),this.viewed&&Y(n,b)),M(e,P),e.setAttribute("style",""),N(e,{zIndex:i.zIndex}),this.initContainer(),this.viewerData=C({},this.containerData),this.renderList(),this.viewed&&this.initImage(function(){t.renderImage(function(){i.transition&&setTimeout(function(){M(n,b),M(s,b)},0)})})),this},exit:function(){var t=this,i=this.options,e=this.viewer,n=this.image,s=this.list;return this.isShown&&!this.played&&this.fulled&&i.inline&&(this.fulled=!1,this.close(),Y(this.button,j),i.transition&&(Y(s,b),this.viewed&&Y(n,b)),Y(e,P),N(e,{zIndex:i.zIndexInline}),this.viewerData=C({},this.parentData),this.renderViewer(),this.renderList(),this.viewed&&this.initImage(function(){t.renderImage(function(){i.transition&&setTimeout(function(){M(n,b),M(s,b)},0)})})),this},tooltip:function(){var t=this,i=this.options,e=this.tooltipBox,n=this.imageData;return this.viewed&&!this.played&&i.tooltip&&(e.textContent="".concat(Math.round(100*n.ratio),"%"),this.tooltipping?clearTimeout(this.tooltipping):i.transition?(this.fading&&F(e,r),M(e,u),M(e,f),M(e,b),e.offsetWidth,M(e,d)):M(e,u),this.tooltipping=setTimeout(function(){i.transition?(R(e,r,function(){Y(e,u),Y(e,f),Y(e,b),t.fading=!1},{once:!0}),Y(e,d),t.fading=!0):Y(e,u),t.tooltipping=!1},1e3)),this},toggle:function(){return 1===this.imageData.ratio?this.zoomTo(this.initialImageData.ratio,!0):this.zoomTo(1,!0),this},reset:function(){return this.viewed&&!this.played&&(this.imageData=C({},this.initialImageData),this.renderImage()),this},update:function(){var t=this.element,i=this.options,e=this.isImg;if(e&&!t.parentNode)return this.destroy();var n,s=[];return S(e?[t]:t.querySelectorAll("img"),function(t){(!i.filter||i.filter(t))&&s.push(t)}),s.length&&(this.images=s,this.length=s.length,this.ready?(n=[],S(this.items,function(t,i){var t=t.querySelector("img"),e=s[i];e&&e.src===t.src||n.push(i)}),N(this.list,{width:"auto"}),this.initList(),this.isShown&&(this.length?this.viewed&&(0<=(e=n.indexOf(this.index))?(this.viewed=!1,this.view(Math.max(this.index-(e+1),0))):M(this.items[this.index],m)):(this.image=null,this.viewed=!1,this.index=0,this.imageData={},this.canvas.innerHTML="",this.title.innerHTML=""))):this.build()),this},destroy:function(){var t=this.element,i=this.options;return t[g]&&(this.destroyed=!0,this.ready?(this.played&&this.stop(),i.inline?(this.fulled&&this.exit(),this.unbind()):this.isShown?(this.viewing&&(this.imageRendering?this.imageRendering.abort():this.imageInitializing&&this.imageInitializing.abort()),this.hiding&&this.transitioning.abort(),this.hidden()):this.showing&&(this.transitioning.abort(),this.hidden()),this.ready=!1,this.viewer&&this.viewer.parentNode&&this.viewer.parentNode.removeChild(this.viewer)):i.inline&&(this.delaying?this.delaying.abort():this.initializing&&this.initializing.abort()),i.inline||O(t,y,this.onStart),this.viewer&&this.viewer.parentNode&&this.viewer.parentNode.removeChild(this.viewer),t[g]=void 0),this}},Ct={open:function(){var t=this.body;M(t,Z),t.style.paddingRight="".concat(this.scrollbarWidth+(parseFloat(this.initialBodyPaddingRight)||0),"px")},close:function(){var t=this.body;Y(t,Z),t.style.paddingRight=this.initialBodyPaddingRight},shown:function(){var t=this.element,i=this.options;this.fulled=!0,this.isShown=!0,this.render(),this.bind(),this.showing=!1,E(i.shown)&&R(t,at,i.shown,{once:!0}),!1!==F(t,at)&&this.ready&&this.isShown&&!this.hiding&&this.view(this.index)},hidden:function(){var t=this.element,i=this.options;this.fulled=!1,this.viewed=!1,this.isShown=!1,this.close(),this.unbind(),M(this.viewer,v),this.resetList(),this.resetImage(),this.hiding=!1,this.destroyed||(E(i.hidden)&&R(t,G,i.hidden,{once:!0}),F(t,G))},requestFullscreen:function(){var t=this.element.ownerDocument;this.fulled&&!(t.fullscreenElement||t.webkitFullscreenElement||t.mozFullScreenElement||t.msFullscreenElement)&&((t=t.documentElement).requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen())},exitFullscreen:function(){var t=this.element.ownerDocument;this.fulled&&(t.fullscreenElement||t.webkitFullscreenElement||t.mozFullScreenElement||t.msFullscreenElement)&&(t.exitFullscreen?t.exitFullscreen():t.webkitExitFullscreen?t.webkitExitFullscreen():t.mozCancelFullScreen?t.mozCancelFullScreen():t.msExitFullscreen&&t.msExitFullscreen())},change:function(t){var i,o,e=this.options,n=this.pointers,s=n[Object.keys(n)[0]],a=s.endX-s.startX,r=s.endY-s.startY;switch(this.action){case l:this.move(a,r);break;case c:this.zoom((i=C({},h=n),o=[],S(h,function(s,t){delete i[t],S(i,function(t){var i=Math.abs(s.startX-t.startX),e=Math.abs(s.startY-t.startY),n=Math.abs(s.endX-t.endX),t=Math.abs(s.endY-t.endY),i=Math.sqrt(i*i+e*e),e=Math.sqrt(n*n+t*t);o.push((e-i)/i)})}),o.sort(function(t,i){return Math.abs(t)<Math.abs(i)}),o[0]),!1,t);break;case W:this.action="switched";var h=Math.abs(a);1<h&&h>Math.abs(r)&&(this.pointers={},1<a?this.prev(e.loop):a<-1&&this.next(e.loop))}S(n,function(t){t.startX=t.endX,t.startY=t.endY})},isSwitchable:function(){var t=this.imageData,i=this.viewerData;return 1<this.length&&0<=t.left&&0<=t.top&&t.width<=i.width&&t.height<=i.height}},Nt=i.Viewer,i=function(){function s(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=this,n=s;if(!(e instanceof n))throw new TypeError("Cannot call a class as a function");if(!t||1!==t.nodeType)throw new Error("The first argument is required and must be an element.");this.element=t,this.options=C({},h,mt(i)&&i),this.action=!1,this.fading=!1,this.fulled=!1,this.hiding=!1,this.imageClicked=!1,this.imageData={},this.index=this.options.initialViewIndex,this.isImg=!1,this.isShown=!1,this.length=0,this.played=!1,this.playing=!1,this.pointers={},this.ready=!1,this.showing=!1,this.timeout=!1,this.tooltipping=!1,this.viewed=!1,this.viewing=!1,this.wheeling=!1,this.zooming=!1,this.init()}var t,i,e;return t=s,e=[{key:"noConflict",value:function(){return window.Viewer=Nt,s}},{key:"setDefaults",value:function(t){C(h,mt(t)&&t)}}],(i=[{key:"init",value:function(){var i,t,e,n,s,o=this,a=this.element,r=this.options;a[g]||(a[g]=this,t="img"===a.tagName.toLowerCase(),i=[],S(t?[a]:a.querySelectorAll("img"),function(t){(!E(r.filter)||r.filter.call(o,t))&&i.push(t)}),this.isImg=t,this.length=i.length,this.images=i,e=(t=a.ownerDocument).body||t.documentElement,this.body=e,this.scrollbarWidth=window.innerWidth-t.documentElement.clientWidth,this.initialBodyPaddingRight=window.getComputedStyle(e).paddingRight,I(document.createElement(g).style.transition)&&(r.transition=!1),r.inline?(n=0,s=function(){var t;(n+=1)===o.length&&(o.initializing=!1,o.delaying={abort:function(){clearTimeout(t)}},t=setTimeout(function(){o.delaying=!1,o.build()},0))},this.initializing={abort:function(){S(i,function(t){t.complete||O(t,x,s)})}},S(i,function(t){t.complete?s():R(t,x,s,{once:!0})})):R(a,y,this.onStart=function(t){t=t.target;"img"!==t.tagName.toLowerCase()||E(r.filter)&&!r.filter.call(o,t)||o.view(o.images.indexOf(t))}))}},{key:"build",value:function(){var t,o,i,e,n,s,a,r,h,l,c,d,u,m;this.ready||(t=this.element,o=this.options,i=t.parentNode,(u=document.createElement("div")).innerHTML='<div class="viewer-container" touch-action="none"><div class="viewer-container-box"><div class="viewer-canvas" id="viewer-canvas"></div><div class="viewer-footer"><div class="viewer-title"></div><div class="viewer-toolbar"></div><div class="viewer-navbar"><ul class="viewer-list"></ul></div></div><div class="viewer-tooltip"></div><div class="viewer-button-box" title="按住鼠标鼠标左键可拖动"><div role="button" class="viewer-button" data-viewer-action="mix"></div></div><div class="viewer-player"></div></div></div>',u=(e=u.querySelector(".".concat(g,"-container"))).querySelector(".".concat(g,"-title")),n=e.querySelector(".".concat(g,"-toolbar")),m=e.querySelector(".".concat(g,"-navbar")),s=e.querySelector(".".concat(g,"-button")),a=e.querySelector(".".concat(g,"-canvas")),this.parent=i,this.viewer=e,this.title=u,this.toolbar=n,this.navbar=m,this.button=s,this.canvas=a,this.footer=e.querySelector(".".concat(g,"-footer")),this.tooltipBox=e.querySelector(".".concat(g,"-tooltip")),this.player=e.querySelector(".".concat(g,"-player")),this.list=e.querySelector(".".concat(g,"-list")),M(u,o.title?Dt(Array.isArray(o.title)?o.title[0]:o.title):v),M(m,o.navbar?Dt(o.navbar):v),X(s,v,!o.button),o.backdrop&&(M(e,"".concat(g,"-backdrop")),o.inline||"static"===o.backdrop||wt(a,lt,"hide")),T(o.className)&&o.className&&o.className.split(ct).forEach(function(t){M(e,t)}),o.toolbar?(r=document.createElement("ul"),h=mt(o.toolbar),l=z.slice(0,3),c=z.slice(7,9),d=z.slice(9),h||M(n,Dt(o.toolbar)),S(h?o.toolbar:z,function(t,i){var e,n=h&&mt(t),i=h?pt(i):t,s=n&&!I(t.show)?t.show:t;!s||!o.zoomable&&-1!==l.indexOf(i)||!o.rotatable&&-1!==c.indexOf(i)||!o.scalable&&-1!==d.indexOf(i)||(e=n&&!I(t.size)?t.size:t,n=n&&!I(t.click)?t.click:t,(t=document.createElement("li")).setAttribute("role","button"),M(t,"".concat(g,"-").concat(i)),E(n)||wt(t,lt,i),D(s)&&M(t,Dt(s)),-1!==["small","large"].indexOf(e)?M(t,"".concat(g,"-").concat(e)):"play"===i&&M(t,"".concat(g,"-large")),E(n)&&R(t,y,n),r.appendChild(t))}),n.appendChild(r)):M(n,v),o.rotatable||(M(u=n.querySelectorAll('li[class*="rotate"]'),p),S(u,function(t){n.appendChild(t)})),o.inline?(M(s,H),N(e,{zIndex:o.zIndexInline}),"static"===window.getComputedStyle(i).position&&N(i,{position:"relative"}),i.insertBefore(e,t.nextSibling)):(M(s,A),M(e,P),M(e,f),M(e,v),N(e,{zIndex:o.zIndex}),(m=(m=T(m=o.container)?t.ownerDocument.querySelector(m):m)||this.body).appendChild(e)),o.inline&&(this.render(),this.bind(),this.isShown=!0),this.ready=!0,E(o.ready)&&R(t,nt,o.ready,{once:!0}),!1===F(t,nt)?this.ready=!1:this.ready&&o.inline&&this.view(this.index))}}])&&o(t.prototype,i),e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),s}();return C(i.prototype,e,t,Et,St,Ct),i});