viewerjs
Version:
JavaScript image viewer.
10 lines • 23.4 kB
JavaScript
/*!
* Viewer.js v0.5.1
* https://github.com/fengyuanchen/viewerjs
*
* Copyright (c) 2015-2017 Fengyuan Chen
* Released under the MIT license
*
* Date: 2017-01-02T13:01:55.700Z
*/
!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("Viewer requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function i(e){return Me.call(e).slice(8,-1).toLowerCase()}function n(e){return"string"==typeof e}function a(e){return"number"==typeof e&&!isNaN(e)}function o(e){return"undefined"==typeof e}function r(e){return"object"==typeof e&&null!==e}function s(e){var t,i;if(!r(e))return!1;try{return t=e.constructor,i=t.prototype,t&&i&&Oe.call(i,"isPrototypeOf")}catch(e){return!1}}function l(e){return"function"===i(e)}function c(e){return Array.isArray?Array.isArray(e):"array"===i(e)}function u(e,t){return t=t>=0?t:0,Array.from?Array.from(e).slice(t):Re.call(e,t)}function d(e,t){var i=-1;return t.indexOf?t.indexOf(e):(h(t,function(t,n){if(t===e)return i=n,!1}),i)}function m(e){return n(e)&&(e=e.trim?e.trim():e.replace(Ye,"1")),e}function h(e,t){var i,n;if(e&&l(t))if(c(e)||a(e.length))for(n=0,i=e.length;n<i&&t.call(e,e[n],n,e)!==!1;n++);else if(r(e))for(n in e)if(e.hasOwnProperty(n)&&t.call(e,e[n],n,e)===!1)break;return e}function f(e){var t;if(arguments.length>1){if(t=u(arguments),Object.assign)return Object.assign.apply(Object,t);t.shift(),h(t,function(t){h(t,function(t,i){e[i]=t})})}return e}function v(e,t){var i=u(arguments,2);return function(){return e.apply(t,i.concat(u(arguments)))}}function g(e,t){var i=e.style;h(t,function(e,t){Fe.test(t)&&a(e)&&(e+="px"),i[t]=e})}function w(t){return e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle}function p(e,t){return e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function b(e,t){var i;if(t){if(a(e.length))return h(e,function(e){b(e,t)});if(e.classList)return e.classList.add(t);i=m(e.className),i?i.indexOf(t)<0&&(e.className=i+" "+t):e.className=t}}function y(e,t){if(t)return a(e.length)?h(e,function(e){y(e,t)}):e.classList?e.classList.remove(t):void(e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,"")))}function x(e,t,i){return a(e.length)?h(e,function(e){x(e,t,i)}):void(i?b(e,t):y(e,t))}function z(e){return e.replace(Ve,"$1-$2").toLowerCase()}function E(e,t){return r(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-"+z(t))}function T(e,t,i){r(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute("data-"+z(t),i)}function D(e,t){if(r(e[t]))delete e[t];else if(e.dataset)try{delete e.dataset[t]}catch(i){e.dataset[t]=null}else e.removeAttribute("data-"+z(t))}function I(e,t,i,n){var a=m(t).split(Xe),o=i;return a.length>1?h(a,function(t){I(e,t,i)}):(n&&(i=function(){return k(e,t,i),o.apply(e,arguments)}),void(e.addEventListener?e.addEventListener(t,i,!1):e.attachEvent&&e.attachEvent("on"+t,i)))}function k(e,t,i){var n=m(t).split(Xe);return n.length>1?h(n,function(t){k(e,t,i)}):void(e.removeEventListener?e.removeEventListener(t,i,!1):e.detachEvent&&e.detachEvent("on"+t,i))}function L(e,t,i){var n;return e.dispatchEvent?(l(Z)&&l(CustomEvent)?n=o(i)?new Z(t,{bubbles:!0,cancelable:!0}):new CustomEvent(t,{detail:i,bubbles:!0,cancelable:!0}):o(i)?(n=U.createEvent("Event"),n.initEvent(t,!0,!0)):(n=U.createEvent("CustomEvent"),n.initCustomEvent(t,!0,!0,i)),e.dispatchEvent(n)):e.fireEvent?e.fireEvent("on"+t):void 0}function F(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function V(t){var i,n,o,r=t||e.event;return r.target||(r.target=r.srcElement||U),!a(r.pageX)&&a(r.clientX)&&(i=t.target.ownerDocument||U,n=i.documentElement,o=i.body,r.pageX=r.clientX+((n&&n.scrollLeft||o&&o.scrollLeft||0)-(n&&n.clientLeft||o&&o.clientLeft||0)),r.pageY=r.clientY+((n&&n.scrollTop||o&&o.scrollTop||0)-(n&&n.clientTop||o&&o.clientTop||0))),r}function Y(t){var i=U.documentElement,n=t.getBoundingClientRect();return{left:n.left+(e.scrollX||i&&i.scrollLeft||0)-(i&&i.clientLeft||0),top:n.top+(e.scrollY||i&&i.scrollTop||0)-(i&&i.clientTop||0)}}function X(e,t){return e.getElementsByTagName(t)}function N(e,t){return e.getElementsByClassName?e.getElementsByClassName(t):e.querySelectorAll("."+t)}function S(e,t){return t.length?h(t,function(t){S(e,t)}):void e.appendChild(t)}function C(e){e.parentNode&&e.parentNode.removeChild(e)}function A(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function P(e,t){o(e.textContent)?e.innerText=t:e.textContent=t}function q(e){return e.offsetWidth}function M(e){return n(e)?e.replace(/^.*\//,"").replace(/[\?&#].*$/,""):""}function O(e,t){var i;return e.naturalWidth?t(e.naturalWidth,e.naturalHeight):(i=U.createElement("img"),i.onload=function(){t(this.width,this.height)},void(i.src=e.src))}function R(e){var t=[],i=e.rotate,n=e.scaleX,o=e.scaleY;return a(i)&&t.push("rotate("+i+"deg)"),a(n)&&t.push("scaleX("+n+")"),a(o)&&t.push("scaleY("+o+")"),t.length?t.join(" "):"none"}function W(e){switch(e){case 2:return te;case 3:return ie;case 4:return ne}}function _(e,t){var i={endX:e.pageX,endY:e.pageY};return t?i:f({startX:e.pageX,startY:e.pageY},i)}function B(e){var t=f({},e),i=[];return h(e,function(e,n){delete t[n],h(t,function(t){var n=Math.abs(e.startX-t.startX),a=Math.abs(e.startY-t.startY),o=Math.abs(e.endX-t.endX),r=Math.abs(e.endY-t.endY),s=Math.sqrt(n*n+a*a),l=Math.sqrt(o*o+r*r),c=(l-s)/s;i.push(c)})}),i.sort(function(e,t){return Math.abs(e)<Math.abs(t)}),i[0]}function j(e){var t=0,i=0,n=0;return h(e,function(e){t+=e.startX,i+=e.startY,n+=1}),t/=n,i/=n,{pageX:t,pageY:i}}function H(e,t){var i=this;i.element=e,i.options=f({},H.DEFAULTS,s(t)&&t),i.isImg=!1,i.isBuilt=!1,i.isShown=!1,i.isViewed=!1,i.isFulled=!1,i.isPlayed=!1,i.wheeling=!1,i.playing=!1,i.fading=!1,i.tooltiping=!1,i.transitioning=!1,i.action=!1,i.target=!1,i.timeout=!1,i.index=0,i.length=0,i.pointers={},i.init()}var U=e.document,Z=e.Event,$=e.PointerEvent,K="viewer",G=K+"-fixed",J=K+"-open",Q=K+"-show",ee=K+"-hide",te="viewer-hide-xs-down",ie="viewer-hide-sm-down",ne="viewer-hide-md-down",ae=K+"-fade",oe=K+"-in",re=K+"-move",se=K+"-active",le=K+"-invisible",ce=K+"-transition",ue=K+"-fullscreen",de=K+"-fullscreen-exit",me=K+"-close",he=$?"pointerdown":"touchstart mousedown",fe=$?"pointermove":"mousemove touchmove",ve=$?"pointerup pointercancel":"touchend touchcancel mouseup",ge="wheel mousewheel DOMMouseScroll",we="transitionend",pe="load",be="keydown",ye="click",xe="resize",ze="ready",Ee="show",Te="shown",De="hide",Ie="hidden",ke="view",Le="viewed",Fe=/^(width|height|left|top|marginLeft|marginTop)$/,Ve=/([a-z\d])([A-Z])/g,Ye=/^\s+(.*)\s+$/,Xe=/\s+/,Ne="undefined"!=typeof U.createElement(K).style.transition,Se=Math.min,Ce=Math.max,Ae=Math.abs,Pe=(Math.sqrt,Math.round),qe=Object.prototype,Me=qe.toString,Oe=qe.hasOwnProperty,Re=Array.prototype.slice;H.prototype={constructor:H,init:function(){var t=this,i=t.options,n=t.element,a="img"===n.tagName.toLowerCase(),o=a?[n]:X(n,"img"),r=o.length,s=v(t.ready,t);E(n,K)||(T(n,K,t),r&&(l(i.ready)&&I(n,ze,i.ready,!0),Ne||(i.transition=!1),t.isImg=a,t.length=r,t.count=0,t.images=o,t.body=U.body,t.scrollbarWidth=e.innerWidth-U.body.clientWidth,i.inline?(I(n,ze,function(){t.view()},!0),h(o,function(e){e.complete?s():I(e,pe,s,!0)})):I(n,ye,t._start=v(t.start,t))))},ready:function(){var e=this;e.count++,e.count===e.length&&e.build()},build:function(){var e,t,i,n,a,o,r,s,l=this,c=l.options,u=l.element;l.isBuilt||(e=U.createElement("div"),e.innerHTML=H.TEMPLATE,l.parent=t=u.parentNode,l.viewer=i=N(e,"viewer-container")[0],l.canvas=N(i,"viewer-canvas")[0],l.footer=N(i,"viewer-footer")[0],l.title=r=N(i,"viewer-title")[0],l.toolbar=a=N(i,"viewer-toolbar")[0],l.navbar=o=N(i,"viewer-navbar")[0],l.button=n=N(i,"viewer-button")[0],l.tooltipBox=N(i,"viewer-tooltip")[0],l.player=N(i,"viewer-player")[0],l.list=N(i,"viewer-list")[0],b(r,c.title?W(c.title):ee),b(a,c.toolbar?W(c.toolbar):ee),b(o,c.navbar?W(c.navbar):ee),x(n,ee,!c.button),x(a.querySelector(".viewer-one-to-one"),le,!c.zoomable),x(a.querySelectorAll('li[class*="zoom"]'),le,!c.zoomable),x(a.querySelectorAll('li[class*="flip"]'),le,!c.scalable),c.rotatable||(s=a.querySelectorAll('li[class*="rotate"]'),b(s,le),S(a,s)),c.inline?(b(n,ue),g(i,{zIndex:c.zIndexInline}),"static"===w(t).position&&g(t,{position:"relative"})):(b(n,me),b(i,G),b(i,ae),b(i,ee),g(i,{zIndex:c.zIndex})),t.insertBefore(i,u.nextSibling),c.inline&&(l.render(),l.bind(),l.isShown=!0),l.isBuilt=!0,L(u,ze))},unbuild:function(){var e=this;e.isBuilt&&(e.isBuilt=!1,C(e.viewer))},bind:function(){var t=this,i=t.options,n=t.element,a=t.viewer;l(i.view)&&I(n,ke,i.view),l(i.viewed)&&I(n,Le,i.viewed),I(a,ye,t._click=v(t.click,t)),I(a,ge,t._wheel=v(t.wheel,t)),I(t.canvas,he,t._mousedown=v(t.mousedown,t)),I(U,fe,t._mousemove=v(t.mousemove,t)),I(U,ve,t._mouseup=v(t.mouseup,t)),I(U,be,t._keydown=v(t.keydown,t)),I(e,xe,t._resize=v(t.resize,t))},unbind:function(){var t=this,i=t.options,n=t.element,a=t.viewer;l(i.view)&&k(n,ke,i.view),l(i.viewed)&&k(n,Le,i.viewed),k(a,ye,t._click),k(a,ge,t._wheel),k(t.canvas,he,t._mousedown),k(U,fe,t._mousemove),k(U,ve,t._mouseup),k(U,be,t._keydown),k(e,xe,t._resize)},render:function(){var e=this;e.initContainer(),e.initViewer(),e.initList(),e.renderViewer()},initContainer:function(){var t=this;t.containerData={width:e.innerWidth,height:e.innerHeight}},initViewer:function(){var e,t=this,i=t.options,n=t.parent;i.inline&&(t.parentData=e={width:Ce(n.offsetWidth,i.minWidth),height:Ce(n.offsetHeight,i.minHeight)}),!t.isFulled&&e||(e=t.containerData),t.viewerData=f({},e)},renderViewer:function(){var e=this;e.options.inline&&!e.isFulled&&g(e.viewer,e.viewerData)},initList:function(){var e=this,t=e.options,i=e.element,a=e.list,o=[];h(e.images,function(e,i){var a=e.src,r=e.alt||M(a),s=t.url;a&&(n(s)?s=e.getAttribute(s):l(s)&&(s=s.call(e,e)),o.push('<li><img src="'+a+'" data-action="view" data-index="'+i+'" data-original-url="'+(s||a)+'" alt="'+r+'"></li>'))}),a.innerHTML=o.join(""),h(X(a,"img"),function(t){T(t,"filled",!0),I(t,pe,v(e.loadImage,e),!0)}),e.items=X(a,"li"),t.transition&&I(i,Le,function(){b(a,ce)},!0)},renderList:function(e){var t=this,i=e||t.index,n=t.items[i].offsetWidth||30,a=n+1;g(t.list,{width:a*t.length,marginLeft:(t.viewerData.width-n)/2-a*i})},resetList:function(){var e=this;A(e.list),y(e.list,ce),g({marginLeft:0})},initImage:function(e){var t=this,i=t.options,n=t.image,a=t.viewerData,o=t.footer.offsetHeight,r=a.width,s=Ce(a.height-o,o),c=t.imageData||{};O(n,function(n,a){var o,u,d=n/a,m=r,h=s;s*d>r?h=r/d:m=s*d,m=Se(.9*m,n),h=Se(.9*h,a),u={naturalWidth:n,naturalHeight:a,aspectRatio:d,ratio:m/n,width:m,height:h,left:(r-m)/2,top:(s-h)/2},o=f({},u),i.rotatable&&(u.rotate=c.rotate||0,o.rotate=0),i.scalable&&(u.scaleX=c.scaleX||1,u.scaleY=c.scaleY||1,o.scaleX=1,o.scaleY=1),t.imageData=u,t.initialImageData=o,l(e)&&e()})},renderImage:function(e){var t=this,i=t.image,n=t.imageData,a=R(n);g(i,{width:n.width,height:n.height,marginLeft:n.left,marginTop:n.top,WebkitTransform:a,msTransform:a,transform:a}),l(e)&&(t.transitioning?I(i,we,e,!0):e())},resetImage:function(){var e=this;e.image&&(C(e.image),e.image=null)},start:function(e){var t=this,i=V(e),n=i.target;"img"===n.tagName.toLowerCase()&&(t.target=n,t.show())},click:function(e){var t=this,i=V(e),n=i.target,a=E(n,"action"),o=t.imageData;switch(a){case"mix":t.isPlayed?t.stop():t.options.inline?t.isFulled?t.exit():t.full():t.hide();break;case"view":t.view(E(n,"index"));break;case"zoom-in":t.zoom(.1,!0);break;case"zoom-out":t.zoom(-.1,!0);break;case"one-to-one":t.toggle();break;case"reset":t.reset();break;case"prev":t.prev();break;case"play":t.play();break;case"next":t.next();break;case"rotate-left":t.rotate(-90);break;case"rotate-right":t.rotate(90);break;case"flip-horizontal":t.scaleX(-o.scaleX||-1);break;case"flip-vertical":t.scaleY(-o.scaleY||-1);break;default:t.isPlayed&&t.stop()}},load:function(){var e=this,t=e.options,i=e.image,n=e.index,a=e.viewerData;e.timeout&&(clearTimeout(e.timeout),e.timeout=!1),y(i,le),i.style.cssText="width:0;height:0;margin-left:"+a.width/2+"px;margin-top:"+a.height/2+"px;max-width:none!important;visibility:visible;",e.initImage(function(){x(i,ce,t.transition),x(i,re,t.movable),e.renderImage(function(){e.isViewed=!0,L(e.element,Le,{originalImage:e.images[n],index:n,image:i})})})},loadImage:function(e){var t=V(e),i=t.target,n=i.parentNode,a=n.offsetWidth||30,o=n.offsetHeight||50,r=!!E(i,"filled");O(i,function(e,t){var n=e/t,s=a,l=o;o*n>a?r?s=o*n:l=a/n:r?l=a/n:s=o*n,g(i,{width:s,height:l,marginLeft:(a-s)/2,marginTop:(o-l)/2})})},resize:function(){var e=this;e.initContainer(),e.initViewer(),e.renderViewer(),e.renderList(),e.isViewed&&e.initImage(function(){e.renderImage()}),e.isPlayed&&h(X(e.player,"img"),function(t){I(t,pe,v(e.loadImage,e),!0),L(t,pe)})},wheel:function(e){var t=this,i=V(e),n=Number(t.options.zoomRatio)||.1,a=1;t.isViewed&&(F(i),t.wheeling||(t.wheeling=!0,setTimeout(function(){t.wheeling=!1},50),i.deltaY?a=i.deltaY>0?1:-1:i.wheelDelta?a=-i.wheelDelta/120:i.detail&&(a=i.detail>0?1:-1),t.zoom(-a*n,!0,i)))},keydown:function(e){var t=this,i=V(e),n=t.options,a=i.keyCode||i.which||i.charCode;if(t.isFulled&&n.keyboard)switch(a){case 27:t.isPlayed?t.stop():n.inline?t.isFulled&&t.exit():t.hide();break;case 32:t.isPlayed&&t.stop();break;case 37:t.prev();break;case 38:F(i),t.zoom(n.zoomRatio,!0);break;case 39:t.next();break;case 40:F(i),t.zoom(-n.zoomRatio,!0);break;case 48:case 49:(i.ctrlKey||i.shiftKey)&&(F(i),t.toggle())}},mousedown:function(e){var t=this,i=t.options,n=t.pointers,a=V(e),o=!!i.movable&&"move";t.isViewed&&(a.changedTouches?h(a.changedTouches,function(e){n[e.identifier]=_(e)}):n[a.pointerId||0]=_(a),Object.keys(n).length>1?o="zoom":"touch"!==a.pointerType&&"touchmove"!==a.type||!t.isSwitchable()||(o="switch"),t.action=o)},mousemove:function(e){var t=this,i=t.options,n=t.pointers,a=V(e),o=t.action,r=t.image;t.isViewed&&o&&(F(a),a.changedTouches?h(a.changedTouches,function(e){f(n[e.identifier],_(e),!0)}):f(n[a.pointerId||0],_(a,!0)),"move"===o&&i.transition&&p(r,ce)&&y(r,ce),t.change(a))},mouseup:function(e){var t=this,i=t.pointers,n=V(e),a=t.action;a&&(n.changedTouches?h(n.changedTouches,function(e){delete i[e.identifier]}):delete i[n.pointerId||0],Object.keys(i).length||("move"===a&&t.options.transition&&b(t.image,ce),t.action=!1))},show:function(){var e,t=this,i=t.options,n=t.element;return i.inline||t.transitioning?t:(t.isBuilt||t.build(),e=t.viewer,l(i.show)&&I(n,Ee,i.show,!0),L(n,Ee)===!1?t:(t.open(),y(e,ee),I(n,Te,function(){t.view(t.target?d(t.target,u(t.images)):t.index),t.target=!1},!0),i.transition?(t.transitioning=!0,b(e,ce),q(e),I(e,we,v(t.shown,t),!0),b(e,oe)):(b(e,oe),t.shown()),t))},hide:function(){var e=this,t=e.options,i=e.element,n=e.viewer;return t.inline||e.transitioning||!e.isShown?e:(l(t.hide)&&I(i,De,t.hide,!0),L(i,De)===!1?e:(e.isViewed&&t.transition?(e.transitioning=!0,I(e.image,we,function(){I(n,we,v(e.hidden,e),!0),y(n,oe)},!0),e.zoomTo(0,!1,!1,!0)):(y(n,oe),e.hidden()),e))},view:function(e){var t,i,n,a,o,r=this,s=r.element,l=r.title,c=r.canvas;return e=Number(e)||0,!r.isShown||r.isPlayed||e<0||e>=r.length||r.isViewed&&e===r.index?r:(i=r.items[e],n=X(i,"img")[0],a=E(n,"originalUrl"),o=n.getAttribute("alt"),t=U.createElement("img"),t.src=a,t.alt=o,L(s,ke,{originalImage:r.images[e],index:e,image:t})===!1?r:(r.image=t,r.isViewed&&y(r.items[r.index],se),b(i,se),r.isViewed=!1,r.index=e,r.imageData=null,b(t,le),A(c),S(c,t),r.renderList(),A(l),I(s,Le,function(){var e=r.imageData,t=e.naturalWidth,i=e.naturalHeight;P(l,o+" ("+t+" × "+i+")")},!0),t.complete?r.load():(I(t,pe,v(r.load,r),!0),r.timeout&&clearTimeout(r.timeout),r.timeout=setTimeout(function(){y(t,le),r.timeout=!1},1e3)),r))},prev:function(){var e=this;return e.view(Ce(e.index-1,0)),e},next:function(){var e=this;return e.view(Se(e.index+1,e.length-1)),e},move:function(e,t){var i=this,n=i.imageData;return i.moveTo(o(e)?e:n.left+Number(e),o(t)?t:n.top+Number(t)),i},moveTo:function(e,t){var i=this,n=i.imageData,r=!1;return o(t)&&(t=e),e=Number(e),t=Number(t),i.isViewed&&!i.isPlayed&&i.options.movable&&(a(e)&&(n.left=e,r=!0),a(t)&&(n.top=t,r=!0),r&&i.renderImage()),i},zoom:function(e,t,i){var n=this,a=n.imageData;return e=Number(e),e=e<0?1/(1-e):1+e,n.zoomTo(a.width*e/a.naturalWidth,t,i),n},zoomTo:function(e,t,i,n){var o,r,s,l,c=this,u=c.options,d=c.pointers,m=.01,h=100,f=c.imageData;return e=Ce(0,e),a(e)&&c.isViewed&&!c.isPlayed&&(n||u.zoomable)&&(n||(m=Ce(m,u.minZoomRatio),h=Se(h,u.maxZoomRatio),e=Se(Ce(e,m),h)),e>.95&&e<1.05&&(e=1),o=f.naturalWidth*e,r=f.naturalHeight*e,i?(s=Y(c.viewer),l=d&&Object.keys(d).length?j(d):{pageX:i.pageX,pageY:i.pageY},f.left-=(o-f.width)*((l.pageX-s.left-f.left)/f.width),f.top-=(r-f.height)*((l.pageY-s.top-f.top)/f.height)):(f.left-=(o-f.width)/2,f.top-=(r-f.height)/2),f.width=o,f.height=r,f.ratio=e,c.renderImage(),t&&c.tooltip()),c},rotate:function(e){var t=this;return t.rotateTo((t.imageData.rotate||0)+Number(e)),t},rotateTo:function(e){var t=this,i=t.imageData;return e=Number(e),a(e)&&t.isViewed&&!t.isPlayed&&t.options.rotatable&&(i.rotate=e,t.renderImage()),t},scale:function(e,t){var i=this,n=i.imageData,r=!1;return o(t)&&(t=e),e=Number(e),t=Number(t),i.isViewed&&!i.isPlayed&&i.options.scalable&&(a(e)&&(n.scaleX=e,r=!0),a(t)&&(n.scaleY=t,r=!0),r&&i.renderImage()),i},scaleX:function(e){var t=this;return t.scale(e,t.imageData.scaleY),t},scaleY:function(e){var t=this;return t.scale(t.imageData.scaleX,e),t},play:function(){var e,t=this,i=t.options,n=t.player,o=v(t.loadImage,t),r=[],s=0,l=0;return!t.isShown||t.isPlayed?t:(i.fullscreen&&t.requestFullscreen(),t.isPlayed=!0,b(n,Q),h(t.items,function(e,t){var a=X(e,"img")[0],c=U.createElement("img");c.src=E(a,"originalUrl"),c.alt=a.getAttribute("alt"),s++,b(c,ae),x(c,ce,i.transition),p(e,se)&&(b(c,oe),l=t),r.push(c),I(c,pe,o,!0),S(n,c)}),a(i.interval)&&i.interval>0&&(e=function(){t.playing=setTimeout(function(){y(r[l],oe),l++,l=l<s?l:0,b(r[l],oe),e()},i.interval)},s>1&&e()),t)},stop:function(){var e=this,t=e.player;return e.isPlayed?(e.options.fullscreen&&e.exitFullscreen(),e.isPlayed=!1,clearTimeout(e.playing),y(t,Q),A(t),e):e},full:function(){var e=this,t=e.options,i=e.viewer,n=e.image,a=e.list;return!e.isShown||e.isPlayed||e.isFulled||!t.inline?e:(e.isFulled=!0,e.open(),b(e.button,de),t.transition&&(y(n,ce),y(a,ce)),b(i,G),i.setAttribute("style",""),g(i,{zIndex:t.zIndex}),e.initContainer(),e.viewerData=f({},e.containerData),e.renderList(),e.initImage(function(){e.renderImage(function(){t.transition&&setTimeout(function(){b(n,ce),b(a,ce)},0)})}),e)},exit:function(){var e=this,t=e.options,i=e.viewer,n=e.image,a=e.list;return e.isFulled?(e.isFulled=!1,e.close(),y(e.button,de),t.transition&&(y(n,ce),y(a,ce)),y(i,G),g(i,{zIndex:t.zIndexInline}),e.viewerData=f({},e.parentData),e.renderViewer(),e.renderList(),e.initImage(function(){e.renderImage(function(){t.transition&&setTimeout(function(){b(n,ce),b(a,ce)},0)})}),e):e},tooltip:function(){var e=this,t=e.options,i=e.tooltipBox,n=e.imageData;return e.isViewed&&!e.isPlayed&&t.tooltip?(P(i,Pe(100*n.ratio)+"%"),e.tooltiping?clearTimeout(e.tooltiping):t.transition?(e.fading&&L(i,we),b(i,Q),b(i,ae),b(i,ce),q(i),b(i,oe)):b(i,Q),e.tooltiping=setTimeout(function(){t.transition?(I(i,we,function(){y(i,Q),y(i,ae),y(i,ce),e.fading=!1},!0),y(i,oe),e.fading=!0):y(i,Q),e.tooltiping=!1},1e3),e):e},toggle:function(){var e=this;return 1===e.imageData.ratio?e.zoomTo(e.initialImageData.ratio,!0):e.zoomTo(1,!0),e},reset:function(){var e=this;return e.isViewed&&!e.isPlayed&&(e.imageData=f({},e.initialImageData),e.renderImage()),e},update:function(){var e,t=this,i=[];return t.isImg&&!t.element.parentNode?t.destroy():(t.length=t.images.length,t.isBuilt&&(h(t.items,function(e,n){var a=X(e,"img")[0],o=t.images[n];o?o.src!==a.src&&i.push(n):i.push(n)}),g(t.list,{width:"auto"}),t.initList(),t.isShown&&(t.length?t.isViewed&&(e=d(t.index,i),e>=0?(t.isViewed=!1,t.view(Ce(t.index-(e+1),0))):b(t.items[t.index],se)):(t.image=null,t.isViewed=!1,t.index=0,t.imageData=null,A(t.canvas),A(t.title)))),t)},destroy:function(){var e=this,t=e.element;return e.options.inline?e.unbind():(e.isShown&&e.unbind(),k(t,ye,e._start)),e.unbuild(),D(t,K),e},open:function(){var e=this.body;b(e,J),e.style.paddingRight=this.scrollbarWidth+"px"},close:function(){var e=this.body;y(e,J),e.style.paddingRight=0},shown:function(){var e=this,t=e.options,i=e.element;e.transitioning=!1,e.isFulled=!0,e.isShown=!0,e.isVisible=!0,e.render(),e.bind(),l(t.shown)&&I(i,Te,t.shown,!0),L(i,Te)},hidden:function(){var e=this,t=e.options,i=e.element;e.transitioning=!1,e.isViewed=!1,e.isFulled=!1,e.isShown=!1,e.isVisible=!1,e.unbind(),e.close(),b(e.viewer,ee),e.resetList(),e.resetImage(),l(t.hidden)&&I(i,Ie,t.hidden,!0),L(i,Ie)},requestFullscreen:function(){var e=this,t=U.documentElement;!e.isFulled||U.fullscreenElement||U.mozFullScreenElement||U.webkitFullscreenElement||U.msFullscreenElement||(t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT))},exitFullscreen:function(){var e=this;e.isFulled&&(U.exitFullscreen?U.exitFullscreen():U.msExitFullscreen?U.msExitFullscreen():U.mozCancelFullScreen?U.mozCancelFullScreen():U.webkitExitFullscreen&&U.webkitExitFullscreen())},change:function(e){var t=this,i=t.pointers,n=i[Object.keys(i)[0]],a=n.endX-n.startX,o=n.endY-n.startY;switch(t.action){case"move":t.move(a,o);break;case"zoom":t.zoom(B(i),!1,e);break;case"switch":t.action="switched",Ae(a)>Ae(o)&&(a>1?t.prev():a<-1&&t.next())}h(i,function(e){e.startX=e.endX,e.startY=e.endY})},isSwitchable:function(){var e=this,t=e.imageData,i=e.viewerData;return e.length>1&&t.left>=0&&t.top>=0&&t.width<=i.width&&t.height<=i.height}},H.DEFAULTS={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},H.TEMPLATE='<div class="viewer-container"><div class="viewer-canvas"></div><div class="viewer-footer"><div class="viewer-title"></div><ul class="viewer-toolbar"><li class="viewer-zoom-in" data-action="zoom-in"></li><li class="viewer-zoom-out" data-action="zoom-out"></li><li class="viewer-one-to-one" data-action="one-to-one"></li><li class="viewer-reset" data-action="reset"></li><li class="viewer-prev" data-action="prev"></li><li class="viewer-play" data-action="play"></li><li class="viewer-next" data-action="next"></li><li class="viewer-rotate-left" data-action="rotate-left"></li><li class="viewer-rotate-right" data-action="rotate-right"></li><li class="viewer-flip-horizontal" data-action="flip-horizontal"></li><li class="viewer-flip-vertical" data-action="flip-vertical"></li></ul><div class="viewer-navbar"><ul class="viewer-list"></ul></div></div><div class="viewer-tooltip"></div><div class="viewer-button" data-action="mix"></div><div class="viewer-player"></div></div>';var We=e.Viewer;return H.noConflict=function(){return e.Viewer=We,H},H.setDefaults=function(e){f(H.DEFAULTS,e)},"function"==typeof define&&define.amd&&define("viewer",[],function(){return H}),t||(e.Viewer=H),H});