/*! * Viewer.js v1.15.2 * https://fengyuanchen.github.io/viewerjs * * Copyright 2015-present Chen Fengyuan * Released under the MIT license * * Date: 2026-10-01T05:04:39.019Z */ ((t,e)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Viewer=e()})(this,function(){function o(t,e){for(var i=0;i{if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0===i)return("string"===e?String:Number)(t);if("object"!=typeof(i=i.call(t,e||"default")))return i;throw new TypeError("@@toPrimitive must return a primitive value.")})(t,"string");return"symbol"==typeof t?t:t+""}function l(t){return(l="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)}var q={backdrop:!0,button:!0,navbar:!0,navigation:!1,title:!0,toolbar:!0,className:"",container:"body",filter:null,fullscreen:!0,inheritedAttributes:["crossOrigin","decoding","isMap","loading","referrerPolicy","sizes","srcset","useMap"],initialCoverage:.9,initialViewIndex:0,inline:!1,autoplay:!0,interval:5e3,keyboard:!0,focus:!0,loading:!0,loop:!0,preload:!0,minWidth:200,minHeight:100,movable:!0,magnifier:!1,rotatable:!0,rotateOnGesture:!0,rotateOnTouch:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnGesture:!0,zoomOnWheel:!0,slideOnTouch:!0,slideOnWheel:!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,move:null,moved:null,rotate:null,rotated:null,scale:null,scaled:null,zoom:null,zoomed:null,play:null,playing:null,stop:null},t="undefined"!=typeof window&&void 0!==window.document,e=t?window:{},c=!(!t||!e.document.documentElement)&&"ontouchstart"in e.document.documentElement,i=t&&"PointerEvent"in e,x="viewer",j="move",V="rotate",H="switch",B="transform",G="zoom",K="".concat(x,"-active"),U="".concat(x,"-close"),Z="".concat(x,"-fade"),$="".concat(x,"-fixed"),_="".concat(x,"-fullscreen"),J="".concat(x,"-fullscreen-exit"),E="".concat(x,"-hide"),Q="".concat(x,"-hide-md-down"),tt="".concat(x,"-hide-sm-down"),et="".concat(x,"-hide-xs-down"),d="".concat(x,"-in"),z="".concat(x,"-invisible"),v="".concat(x,"-loading"),it="".concat(x,"-move"),nt="".concat(x,"-open"),m="".concat(x,"-show"),O="".concat(x,"-transition"),T="click",at="dblclick",ot="dragstart",st="focusin",rt="keydown",f="load",p="error",ht=i?"pointerdown":c?"touchstart":"mousedown",lt=i?"pointerenter":"mouseenter",ct=i?"pointerleave":"mouseleave",ut=i?"pointermove":c?"touchmove":"mousemove",dt=i?"pointerup pointercancel":c?"touchend touchcancel":"mouseup",u="transitionend",mt="gesturestart gesturechange gestureend",b="viewed",gt="rotated",vt="playing",ft="".concat(x,"Action"),pt=/\s+/,bt=["zoom-in","zoom-out","one-to-one","reset","prev","play","next","rotate-left","rotate-right","flip-horizontal","flip-vertical"];function k(t){return"string"==typeof t}var wt={ctrl:"ctrlKey",shift:"shiftKey",alt:"altKey",meta:"metaKey"};function yt(t,e){return!!t&&(!0===t||k(t)&&t.split("+").every(function(t){return e[wt[t.trim().toLowerCase()]]}))}var xt=Number.isNaN||e.isNaN;function D(t){return"number"==typeof t&&!xt(t)}function I(t){return void 0===t}function a(t){return"object"===l(t)&&null!==t}var Et=Object.prototype.hasOwnProperty;function M(t){if(!a(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&Et.call(i,"isPrototypeOf")}catch(t){return!1}}function S(t){return"function"==typeof t}function A(e,i){if(e&&S(i))if(Array.isArray(e)||D(e.length))for(var t=e.length,n=0;nMath.PI?t-=2*Math.PI:t<-Math.PI&&(t+=2*Math.PI),n.push(180*t/Math.PI)})}),n.sort(function(t,e){return Math.abs(e)-Math.abs(t)}),n[0]||0}function Yt(t,e){var i=t.pageX,t=t.pageY,n={endX:i,endY:t};return e?n:r({timeStamp:Date.now(),startX:i,startY:t},n)}var Xt,i={render:function(){this.initContainer(),this.initViewer(),this.initList(),this.renderViewer()},initBody:function(){var t=this.ownerDocument,e=t.body||t.documentElement;this.body=e,this.scrollbarWidth=window.innerWidth-t.documentElement.clientWidth,this.initialBodyPaddingRight=e.style.paddingRight,this.initialBodyComputedPaddingRight=window.getComputedStyle(e).paddingRight},initContainer:function(){this.containerData={width:window.innerWidth,height:window.innerHeight}},initViewer:function(){var t,e=this.options,i=this.parent;e.inline&&(t={width:Math.max(i.offsetWidth,e.minWidth),height:Math.max(i.offsetHeight,e.minHeight)},this.parentData=t),!this.fulled&&t||(t=this.containerData),this.viewerData=g({},t)},renderViewer:function(){this.options.inline&&!this.fulled&&N(this.viewer,this.viewerData)},initList:function(){var r=this,t=0i.right||b.clientYi.bottom||(b=D(m.scaleX)?m.scaleX:1,i=D(m.scaleY)?m.scaleY:1,o=(m.rotate||0)*Math.PI/180,n=(s=Math.cos(o))*b,a=(o=Math.sin(o))*b,o=-o*i,s=s*i,0==(u=b*i))?this.hideMagnifier():(r=(s*(h-(l=m.x+m.width/2))-o*(f-(c=m.y+m.height/2)))/u+m.width/2,h=(-a*(h-l)+n*(f-c))/u+m.height/2,c=n*(r*t-(l=m.width*t)/2)+o*(h*t-(f=m.height*t)/2),u=a*(r*t-l/2)+s*(h*t-f/2),this.magnifierSourcePoint={x:r,y:h},g.style.width="".concat(d,"px"),g.style.height="".concat(d,"px"),g.style.opacity="".concat(Math.max(0,Math.min(1,D(p)?p:1))),v.src=e,v.style.width="".concat(l,"px"),v.style.height="".concat(f,"px"),v.style.left="".concat(d/2-l/2-c,"px"),v.style.top="".concat(d/2-f/2-u,"px"),v.style.transform="rotate(".concat(m.rotate||0,"deg) scaleX(").concat(b,") scaleY(").concat(i,")"),g.removeAttribute("aria-hidden"),R(g,"viewer-show"))},hideMagnifier:function(){this.magnifier&&(y(this.magnifier,"viewer-show"),this.magnifier.setAttribute("aria-hidden",!0),this.magnifierPoint=null)},pointerdown:function(t){var e=this.options,i=this.pointers,n=this.imageData,a=t.buttons,o=t.button,s=0===Object.keys(i).length;this.pointerMoved=!1,!this.viewed||this.showing||this.viewing||this.hiding||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(D(a)&&1!==a||D(o)&&0!==o||t.ctrlKey)||(t.preventDefault(),t.changedTouches?A(t.changedTouches,function(t){i[t.identifier]=Yt(t)}):i[t.pointerId||0]=Yt(t),a=!!e.movable&&j,(e.zoomable&&e.zoomOnTouch||e.rotatable&&e.rotateOnTouch)&&1l.width/2?0=this.length||this.viewed&&i===n)){var t=this.actionEvent||this.viewOriginalEvent||null;if(this.actionEvent=null,this.viewOriginalEvent=t,!this.isShown)return this.index=i,this.show();this.viewing&&this.viewing.abort();var o,s,r=this.element,h=this.options,l=this.title,e=this.canvas,c=this.getItem(i),u=(c||(this.initList(i),c=this.getItem(i)),c.querySelector("img")),d=Y(u,"originalUrl"),m=u.getAttribute("alt"),g=document.createElement("img");zt(g,u,h.inheritedAttributes),g.src=d,g.alt=m,S(h.view)&&P(r,"view",h.view,{once:!0}),!1===F(r,"view",{originalImage:this.images[i],index:i,image:g,originalEvent:t})||!this.isShown||this.hiding||this.played||(this.hideMagnifier(),(d=this.getItem(n))&&(y(d,K),d.removeAttribute("aria-selected")),R(c,K),c.setAttribute("aria-selected",!0),h.focus&&c.focus(),this.image=g,this.viewed=!1,this.index=i,this.imageData={},R(g,z),h.loading&&R(e,v),e.innerHTML="",e.appendChild(g),this.renderList(),l.innerHTML="",P(r,b,o=function(){var t=a.imageData,e=Array.isArray(h.title)?h.title[1]:h.title;l.innerHTML=k(e=S(e)?e.call(a,g,t):"".concat(m," (").concat(t.naturalWidth," × ").concat(t.naturalHeight,")"))?e.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"):e,h.preload&&(e=(e=i+(t=i=a.length?h.loop?0Math.abs(o)&&(this.pointerMoved=!0,this.actionEvent=t,this.move(a,0))}A(i,function(t){t.startX=t.endX,t.startY=t.endY})}},isSwitchable:function(){var t=this.imageData,e=this.viewerData;return 1{function a(t){var e=1
',n=(i=n.querySelector(".".concat(x,"-container"))).querySelector(".".concat(x,"-title")),a=i.querySelector(".".concat(x,"-toolbar")),b=i.querySelector(".".concat(x,"-navbar")),s=i.querySelector(".".concat(x,"-navigation")),r=i.querySelector(".".concat(x,"-button")),h=i.querySelector(".".concat(x,"-canvas")),this.parent=e,this.viewer=i,this.title=n,this.toolbar=a,this.navbar=b,this.navigation=s,this.button=r,this.canvas=h,this.magnifier=i.querySelector(".".concat(x,"-magnifier")),this.magnifierImage=i.querySelector(".".concat(x,"-magnifier-image")),this.tooltipBox=i.querySelector(".".concat(x,"-tooltip")),this.player=i.querySelector(".".concat(x,"-player")),this.list=i.querySelector(".".concat(x,"-list")),i.id="".concat(x).concat(this.id),n.id="".concat(x,"Title").concat(this.id),R(n,o.title?W(Array.isArray(o.title)?o.title[0]:o.title):E),o.title&&n.removeAttribute("aria-hidden"),w=M(o.navbar)?o.navbar:{},l=o.navbar,c=I(w.size)?o.navbar:w.size,u=-1!==["top","right","bottom","left"].indexOf(w.position)?w.position:"bottom",R(b,(l=M(o.navbar)?!!I(w.show)||w.show:l)?W(l):E),l&&b.removeAttribute("aria-hidden"),-1!==["small","medium","large"].indexOf(c)&&R(b,"".concat(x,"-").concat(c)),this.isNavbarVertical=w="left"===u||"right"===u,R(b,"".concat(x,"-navbar-").concat(u)),l&&(b=w?"navigation":"title",R(g=w?s:n,"".concat(x,"-").concat(b,"-navbar-").concat(u)),w&&R(n,"".concat(x,"-title-navbar-").concat(u)),-1!==["small","large"].indexOf(c))&&(R(g,"".concat(x,"-").concat(b,"-navbar-").concat(w?"".concat(u,"-"):"").concat(c)),w)&&R(n,"".concat(x,"-title-navbar-").concat(u,"-").concat(c)),M(o.navigation)?A(s.querySelectorAll('[role="button"]'),function(t){var e=Y(t,ft),e=o.navigation[e],i=M(e),n=i&&!I(e.show)?e.show:e,i=i&&!I(e.size)?e.size:e;L(t,E,!n),D(n)&&R(t,W(n)),-1!==["small","large"].indexOf(i)&&R(t,"".concat(x,"-").concat(i))}):R(s,o.navigation?W(o.navigation):E),o.navigation&&s.removeAttribute("aria-hidden"),L(r,E,!o.button),o.button&&r.removeAttribute("aria-hidden"),o.keyboard&&(r.setAttribute("tabindex",0),A(s.querySelectorAll('[role="button"]'),function(t){t.setAttribute("tabindex",0)})),o.backdrop&&(R(i,"".concat(x,"-backdrop")),o.inline||"static"===o.backdrop||Dt(h,ft,"hide")),k(o.className)&&o.className&&o.className.split(pt).forEach(function(t){R(i,t)}),o.toolbar?(d=document.createElement("ul"),g=(m=M(o.toolbar))&&-1!==["top","right","bottom","left"].indexOf(o.toolbar.position)?o.toolbar.position:"bottom",v=bt.slice(0,3),f=bt.slice(7,9),p=bt.slice(9),m||R(a,W(o.toolbar)),a.removeAttribute("aria-hidden"),R(a,"".concat(x,"-toolbar-").concat(g)),R(n,"".concat(x,"-title-toolbar-").concat(g)),l&&g===u&&(R(a,"".concat(x,"-toolbar-navbar-").concat(u)),-1!==["small","large"].indexOf(c))&&R(a,"".concat(x,"-toolbar-navbar-").concat(c)),A(m?o.toolbar:bt,function(t,e){var i,n,a;"position"!==e&&(a=m&&M(t),e=m?kt(e):t,i=a&&!I(t.show)?t.show:t)&&(o.zoomable||-1===v.indexOf(e))&&(o.rotatable||-1===f.indexOf(e))&&(o.scalable||-1===p.indexOf(e))&&(n=a&&!I(t.size)?t.size:t,a=a&&!I(t.click)?t.click:t,t=document.createElement("li"),o.keyboard&&t.setAttribute("tabindex",0),t.setAttribute("role","button"),R(t,"".concat(x,"-").concat(e)),S(a)||Dt(t,ft,e),D(i)&&R(t,W(i)),-1!==["small","large"].indexOf(n)?R(t,"".concat(x,"-").concat(n)):"play"===e&&R(t,"".concat(x,"-large")),S(a)&&P(t,T,a.bind(y)),d.appendChild(t))}),a.appendChild(d),"left"!==g&&"right"!==g||R(s,"".concat(x,"-navigation-toolbar-").concat(g))):R(a,E),o.rotatable||(R(b=a.querySelectorAll('li[class*="rotate"]'),z),A(b,function(t){a.appendChild(t)})),o.inline?(R(r,_),N(i,{zIndex:o.zIndexInline}),"static"===window.getComputedStyle(e).position&&N(e,{position:"relative"}),e.insertBefore(i,t.nextSibling)):(R(r,U),R(i,$),R(i,Z),R(i,E),N(i,{zIndex:o.zIndex}),(w=(w=k(w=o.container)?this.ownerDocument.querySelector(w):w)||this.body).appendChild(i)),o.inline&&(this.render(),this.bind(),this.isShown=!0),this.ready=!0,S(o.ready)&&P(t,"ready",o.ready,{once:!0}),!1===F(t,"ready")?this.ready=!1:this.ready&&o.inline&&this.view(this.index))}}])&&o(t.prototype,e),i&&o(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,i})();return g(e.prototype,i,t,Pt,Ft,Wt),e});