UNPKG

iv-viewer

Version:

A zooming and panning plugin inspired by google photos for your web images.

2 lines (1 loc) 21.5 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ImageViewer=t()}(this,function(){function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function o(e,t,n){t=s(t);var i=e,t=c()?Reflect.construct(t,n||[],s(e).constructor):t.apply(e,n);if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");e=i;if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(t)for(var n=e.prototype,i=t,o=0;o<i.length;o++){var a=i[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(n,v(a.key),a)}return Object.defineProperty(e,"prototype",{writable:!1}),e}function l(e,t,n){(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}function a(){return(a="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=s(e)););return e}(e,t);if(i)return(i=Object.getOwnPropertyDescriptor(i,t)).get?i.get.call(arguments.length<3?e:n):i.value}).apply(null,arguments)}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(c=function(){return!!e})()}function u(t,e){var n,i=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)),i}function m(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?u(Object(n),!0).forEach(function(e){l(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function h(e,t){return(h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,o,a,s,r=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0!==t)for(;!(l=(i=a.call(n)).done)&&(r.push(i.value),r.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return r}}(e,t)||function(e,t){{var n;if(e)return"string"==typeof e?i(e,t):"Map"===(n="Object"===(n={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e){e=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return String(e);if("object"!=typeof(n=n.call(e,t)))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:e+""}function p(){}function e(e){e.preventDefault()}function S(e,t,n,i){return e/=i,-n*(--e*e*e*e-1)+t}function f(e){var t=document.createElement(e.tagName);return e.id&&(t.id=e.id),e.html&&(t.innerHTML=e.html),e.className&&(t.className=e.className),e.src&&(t.src=e.src),e.style&&(t.style.cssText=e.style),e.child&&t.appendChild(e.child),e.insertBefore?e.parent.insertBefore(t,e.insertBefore):e.parent.appendChild(t),t}function _(e){return e.complete&&(void 0===e.naturalWidth||0!==e.naturalWidth)}function t(e){return e instanceof NodeList||e instanceof HTMLCollection?Array.prototype.slice.call(e):[e]}function z(e,i){e=t(e);if("string"==typeof i)return window.getComputedStyle(e[0])[i];e.forEach(function(n){Object.keys(i).forEach(function(e){var t=i[e];n.style[e]=t})})}function g(e,t){e.style.removeProperty(t)}function y(e){t(e).forEach(function(e){e.parentNode.removeChild(e)})}function w(e,t,n){return Math.min(Math.max(e,t),n)}function b(t,e,n){return(e="string"==typeof e?[e]:e).forEach(function(e){t.addEventListener(e,n)}),function(){e.forEach(function(e){t.removeEventListener(e,n)})}}function E(e){var t=e[0],e=e[1];return Math.sqrt(Math.pow(e.pageX-t.pageX,2)+Math.pow(e.pageY-t.pageY,2))}var x=function(){return n(function e(t,n){var a=this,i=n.onStart,o=n.onMove,s=n.onEnd,n=n.isSliderEnabled;r(this,e),l(this,"startHandler",function(e){var t,n,i,o;a.isSliderEnabled()&&(a.removeListeners(),e.preventDefault(),t=a.moveHandler,n=a.endHandler,i=a.onStart,o="touchstart"===e.type||"touchend"===e.type,a.touchMoveEvent=o?"touchmove":"mousemove",a.touchEndEvent=o?"touchend":"mouseup",a.sx=(o?e.touches[0]:e).clientX,a.sy=(o?e.touches[0]:e).clientY,i(e,{x:a.sx,y:a.sy}),document.addEventListener(a.touchMoveEvent,t),document.addEventListener(a.touchEndEvent,n),document.addEventListener("contextmenu",n))}),l(this,"moveHandler",function(e){var t,n,i,o;a.isSliderEnabled()&&(e.preventDefault(),o=a.sx,t=a.sy,(0,a.onMove)(e,{dx:(i=((n="touchmove"===a.touchMoveEvent)?e.touches[0]:e).clientX)-o,dy:(o=(n?e.touches[0]:e).clientY)-t,mx:i,my:o}))}),l(this,"endHandler",function(){a.isSliderEnabled()&&(a.removeListeners(),a.onEnd())}),this.container=t,this.isSliderEnabled=n,this.onStart=i||p,this.onMove=o||p,this.onEnd=s||p},[{key:"removeListeners",value:function(){this.touchMoveEvent&&(document.removeEventListener(this.touchMoveEvent,this.moveHandler),document.removeEventListener(this.touchEndEvent,this.endHandler),document.removeEventListener("contextmenu",this.endHandler))}},{key:"init",value:function(){var t=this;["touchstart","mousedown"].forEach(function(e){t.container.addEventListener(e,t.startHandler)})}},{key:"destroy",value:function(){var t=this;["touchstart","mousedown"].forEach(function(e){t.container.removeEventListener(e,t.startHandler)}),this.removeListeners()}}])}(),V=function(){return n(function e(t){var b=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=(r(this,e),l(this,"zoom",function(s,r){var e=b._options,t=b._elements,n=b._state,l=n.zoomValue,c=n.imageDim,i=n.containerDim,u=n.zoomSliderLength,m=t.image,h=t.zoomHandle,d=e.maxZoom,v=(s=Math.round(Math.max(100,s)),s=Math.min(d,s),r=r||{x:i.w/2,y:i.h/2},parseFloat(z(m,"left"))),p=parseFloat(z(m,"top")),f=(b._clearFrames(),0),_=(i.w-c.w)/2,g=(i.h-c.h)/2,y=i.w-_,w=i.h-g;!function e(){++f<16&&(b._frames.zoomFrame=requestAnimationFrame(e));var t=S(f,l,s-l,16),n=(t=Math.abs(s-t)<1?s:t)/l,i=c.w*t/100,o=c.h*t/100,a=-((r.x-v)*n-r.x),n=-((r.y-p)*n-r.y),a=Math.min(a,_),n=Math.min(n,g);a+i<y&&(a=y-i),n+o<w&&(n=w-o),z(m,{height:"".concat(o,"px"),width:"".concat(i,"px"),left:"".concat(a,"px"),top:"".concat(n,"px")}),b._state.zoomValue=t,b._resizeSnapHandle(i,o,a,n),z(h,{left:"".concat((t-100)*u/(d-100),"px")}),b._listeners.onZoomChange&&b._listeners.onZoomChange(b._callbackData)}()}),l(this,"_clearFrames",function(){var e=(n=b._frames).slideMomentumCheck,t=n.sliderMomentumFrame,n=n.zoomFrame;clearInterval(e),cancelAnimationFrame(t),cancelAnimationFrame(n)}),l(this,"_resizeSnapHandle",function(e,t,n,i){var o=b._elements,a=b._state,s=o.snapHandle,o=o.image,r=a.imageDim,l=a.containerDim,c=a.zoomValue,a=a.snapImageDim,e=e||r.w*c/100,t=t||r.h*c/100,r=n||parseFloat(z(o,"left")),c=i||parseFloat(z(o,"top")),n=-r*a.w/e,i=-c*a.h/t,o=l.w*a.w/e,r=l.h*a.h/t;z(s,{top:"".concat(i,"px"),left:"".concat(n,"px"),width:"".concat(o,"px"),height:"".concat(r,"px")}),b._state.snapHandleDim={w:o,h:r}}),l(this,"showSnapView",function(e){var t=(i=b._state).snapViewVisible,n=i.zoomValue,i=i.loaded,o=b._elements.snapView;!b._options.snapView||t||n<=100||!i||(clearTimeout(b._frames.snapViewTimeout),b._state.snapViewVisible=!0,z(o,{opacity:1,pointerEvents:"inherit"}),e)||(b._frames.snapViewTimeout=setTimeout(b.hideSnapView,1500))}),l(this,"hideSnapView",function(){z(b._elements.snapView,{opacity:0,pointerEvents:"none"}),b._state.snapViewVisible=!1}),l(this,"refresh",function(){var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0];b._calculateDimensions(),b.resetZoom(e)}),this._findContainerAndImageSrc(t,n)),i=t.container,o=t.domElement,a=t.imageSrc,t=t.hiResImageSrc;this._elements={container:i,domElement:o},this._options=m(m({},e.defaults),n),this._events={},this._listeners=this._options.listeners||{},this._frames={},this._sliders={},this._state={zoomValue:this._options.zoomValue},this._images={imageSrc:a,hiResImageSrc:t},this._init(),a&&this._loadImages(),o._imageViewer=this},[{key:"zoomInButton",get:function(){return this._options.hasZoomButtons?'<div class="iv-button-zoom--in" role="button"></div>':""}},{key:"zoomOutButton",get:function(){return this._options.hasZoomButtons?'<div class="iv-button-zoom--out" role="button"></div>':""}},{key:"imageViewHtml",get:function(){return'\n <div class="iv-loader"></div>\n <div class="iv-snap-view">\n <div class="iv-snap-image-wrap">\n <div class="iv-snap-handle"></div>\n </div>\n <div class="iv-zoom-actions '.concat(this._options.hasZoomButtons?"iv-zoom-actions--has-buttons":"",'">\n ').concat(this.zoomInButton,'\n <div class="iv-zoom-slider">\n <div class="iv-zoom-handle"></div>\n </div>\n ').concat(this.zoomOutButton,'\n </div>\n </div>\n <div class="iv-image-view" >\n <div class="iv-image-wrap" ></div>\n </div>\n ')}},{key:"_findContainerAndImageSrc",value:function(e){var t,n,i=e;if((i="string"==typeof e?document.querySelector(e):i)._imageViewer)throw new Error("An image viewer is already being initiated on the element.");var o,a,s,r,l;return"IMG"===i.tagName?(t=i.src,n=i.getAttribute("high-res-src")||i.getAttribute("data-high-res-src"),o=i,s=(a={className:"iv-container iv-image-mode",style:{display:"inline-block",overflow:"hidden"}}).tag,r=a.className,l=a.id,a=a.style,s=document.createElement(void 0===s?"div":s),r&&(s.className=r),l&&(s.id=l),a&&(s.style=a),o.parentNode.insertBefore(s,o),o.parentNode.removeChild(o),s.appendChild(o),e=s,z(i,{opacity:0,position:"relative",zIndex:-1})):(t=i.getAttribute("src")||i.getAttribute("data-src"),n=i.getAttribute("high-res-src")||i.getAttribute("data-high-res-src")),{container:e,domElement:i,imageSrc:t,hiResImageSrc:n}}},{key:"_init",value:function(){this._initDom(),this._initImageSlider(),this._initSnapSlider(),this._initZoomSlider(),this._pinchAndZoom(),this._scrollZoom(),this._doubleTapToZoom(),this._initEvents()}},{key:"_initDom",value:function(){var e=this._elements.container;f({tagName:"div",className:"iv-wrap",html:this.imageViewHtml,parent:e}),function t(n,e){var i=e.split(" ");1<i.length?i.forEach(function(e){return t(n,e)}):n.classList?n.classList.add(e):n.className+=" ".concat(e)}(e,"iv-container"),"static"===z(e,"position")&&z(e,{position:"relative"}),this._elements=m(m({},this._elements),{},{snapView:e.querySelector(".iv-snap-view"),snapImageWrap:e.querySelector(".iv-snap-image-wrap"),imageWrap:e.querySelector(".iv-image-wrap"),snapHandle:e.querySelector(".iv-snap-handle"),zoomHandle:e.querySelector(".iv-zoom-handle"),zoomIn:e.querySelector(".iv-button-zoom--in"),zoomOut:e.querySelector(".iv-button-zoom--out")}),this._listeners.onInit&&this._listeners.onInit(this._callbackData)}},{key:"_initImageSlider",value:function(){var c,u,m=this,e=this._elements.imageWrap,e=new x(e,{isSliderEnabled:function(){var e=m._state,t=e.loaded,n=e.zooming,e=e.zoomValue;return t&&!n&&100<e},onStart:function(e,t){var n=m._sliders.snapSlider;m._clearFrames(),n.onStart(),c=[t,t],u=void 0,m._frames.slideMomentumCheck=setInterval(function(){u&&(c.shift(),c.push({x:u.mx,y:u.my}))},50)},onMove:function(e,t){var n=m._state.snapImageDim,i=m._sliders.snapSlider,o=m._getImageCurrentDim();u=t,i.onMove(e,{dx:-t.dx*n.w/o.w,dy:-t.dy*n.h/o.h})},onEnd:function(){function e(){t<=60&&(m._frames.sliderMomentumFrame=requestAnimationFrame(e)),n+=S(t,r/3,-r/3,60),i+=S(t,l/3,-l/3,60),a.onMove(null,{dx:-(n*o.w/s.w),dy:-(i*o.h/s.h)}),t++}var t,n,i,o=m._state.snapImageDim,a=m._sliders.snapSlider,s=m._getImageCurrentDim(),r=(m._clearFrames(),c[1].x-c[0].x),l=c[1].y-c[0].y;(30<Math.abs(r)||30<Math.abs(l))&&(t=1,n=u.dx,i=u.dy,e())}});e.init(),this._sliders.imageSlider=e}},{key:"_initSnapSlider",value:function(){var c,u,m=this,h=this._elements.snapHandle,e=new x(h,{isSliderEnabled:function(){return m._state.loaded},onStart:function(){var e=m._frames,t=e.slideMomentumCheck,e=e.sliderMomentumFrame;c=parseFloat(z(h,"top")),u=parseFloat(z(h,"left")),clearInterval(t),cancelAnimationFrame(e)},onMove:function(e,t){var n=m._state,i=n.snapHandleDim,n=n.snapImageDim,o=m._elements.image,a=m._getImageCurrentDim(),s=Math.max(n.w-i.w,u),i=Math.max(n.h-i.h,c),r=Math.min(0,u),l=Math.min(0,c),r=w(u+t.dx,r,s),s=w(c+t.dy,l,i),t=-r*a.w/n.w,l=-s*a.h/n.h;z(h,{left:"".concat(r,"px"),top:"".concat(s,"px")}),z(o,{left:"".concat(t,"px"),top:"".concat(l,"px")})}});e.init(),this._sliders.snapSlider=e}},{key:"_initZoomSlider",value:function(){var i,o,a=this,e=this._elements,t=e.snapView,n=e.zoomHandle,s=t.querySelector(".iv-zoom-slider"),e=new x(s,{isSliderEnabled:function(){return a._state.loaded},onStart:function(e){var t=a._sliders.zoomSlider;i=s.getBoundingClientRect().left,o=parseInt(z(n,"width"),10),t.onMove(e)},onMove:function(e){var t=a._options.maxZoom,n=a._state.zoomSliderLength,e=w((void 0!==e.clientX?e:e.touches[0]).clientX-i-o/2,0,n);a.zoom(100+(t-100)*e/n)}});e.init(),this._sliders.zoomSlider=e}},{key:"_initEvents",value:function(){this._snapViewEvents(),this._options.refreshOnResize&&(this._events.onWindowResize=b(window,"resize",this.refresh)),this._events.onDragStart=b(this._elements.container,"dragstart",e)}},{key:"_snapViewEvents",value:function(){var e=this,t=this._elements,n=t.imageWrap,t=t.snapView;this._events.snapViewOnMouseMove=b(n,["touchmove","mousemove"],function(){e.showSnapView()}),this._events.mouseEnterSnapView=b(t,["mouseenter","touchstart"],function(){e._state.snapViewVisible=!1,e.showSnapView(!0)}),this._events.mouseLeaveSnapView=b(t,["mouseleave","touchend"],function(){e._state.snapViewVisible=!1,e.showSnapView()}),this._options.hasZoomButtons&&(t=(n=this._elements).zoomOut,n=n.zoomIn,this._events.zoomInClick=b(n,["click"],function(){e.zoom(e._state.zoomValue+e._options.zoomStep||50)}),this._events.zoomOutClick=b(t,["click"],function(){e.zoom(e._state.zoomValue-e._options.zoomStep||50)}))}},{key:"_pinchAndZoom",value:function(){var l=this,e=this._elements,t=e.imageWrap,c=e.container;this._events.pinchStart=b(t,"touchstart",function(e){var t,n,i,o=l._state,a=o.loaded,s=o.zoomValue,r=l._events;a&&(o=e.touches[0],a=e.touches[1],o)&&a&&(l._state.zooming=!0,t=c.getBoundingClientRect(),n=E(e.touches),i={x:(a.clientX+o.clientX)/2-t.left,y:(a.clientY+o.clientY)/2-t.top},r.pinchMove&&r.pinchMove(),r.pinchEnd&&r.pinchEnd(),r.pinchMove=b(document,"touchmove",function(e){e=E(e.touches);l.zoom(s+(e-n)/2,i)}),r.pinchEnd=b(document,"touchend",function(e){r.pinchMove(),r.pinchEnd(),l._state.zooming=!1,1===e.touches.length&&l._sliders.imageSlider.startHandler(e)}))})}},{key:"_scrollZoom",value:function(){var o=this,a=this._options,e=this._elements,s=e.container,e=e.imageWrap,r=0;this._events.scrollZoom=b(e,"wheel",function(e){var t,n=o._state,i=n.loaded,n=n.zoomValue;a.zoomOnMouseWheel&&i&&(o._clearFrames(),100<=(n=n*(100+15*(i=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail||-e.deltaY))))/100)&&n<=a.maxZoom?r=0:r+=Math.abs(i),e.preventDefault(),5<r||(i=s.getBoundingClientRect(),t=e.clientX-i.left,e=e.clientY-i.top,o.zoom(n,{x:t,y:e}),o.showSnapView()))})}},{key:"_doubleTapToZoom",value:function(){var t,n=this,e=this._elements.imageWrap,i=0;this._events.doubleTapToZoom=b(e,"click",function(e){0===i?(i=Date.now(),t={x:e.clientX,y:e.clientY}):i=(Date.now()-i<500&&Math.abs(e.clientX-t.x)<50&&Math.abs(e.clientY-t.y)<50&&(n._state.zoomValue===n._options.zoomValue?n.zoom(200):n.resetZoom()),0)})}},{key:"_getImageCurrentDim",value:function(){var e=this._state,t=e.zoomValue,e=e.imageDim;return{w:e.w*(t/100),h:e.h*(t/100)}}},{key:"_loadImages",value:function(){function e(){z(r,{display:"none"}),z(l,{visibility:"visible"}),a&&t._loadHighResImage(a),t._state.loaded=!0,t._calculateDimensions(),t._listeners.onImageLoaded&&t._listeners.onImageLoaded(t._callbackData),t.resetZoom()}var t=this,n=this._images,i=this._elements,o=n.imageSrc,a=n.hiResImageSrc,n=i.container,s=i.snapImageWrap,i=i.imageWrap,r=n.querySelector(".iv-loader"),n=(y(n.querySelectorAll(".iv-snap-image, .iv-image")),f({tagName:"img",className:"iv-snap-image",src:o,insertBefore:s.firstChild,parent:s})),l=f({tagName:"img",className:"iv-image iv-small-image",src:o,parent:i});this._state.loaded=!1,this._elements.image=l,this._elements.snapImage=n,z(r,{display:"block"}),z(l,{visibility:"hidden"}),this.hideSnapView();_(l)?e():("function"==typeof this._events.imageLoad&&this._events.imageLoad(),this._events.imageLoad=b(l,"load",e))}},{key:"_loadHighResImage",value:function(e){function t(){y(a),n._elements.image=s}var n=this,i=this._elements,o=i.imageWrap,i=i.container,a=this._elements.image,s=f({tagName:"img",className:"iv-image iv-large-image",src:e,parent:o,style:a.style.cssText});s.style.cssText=a.style.cssText,this._elements.image=i.querySelectorAll(".iv-image");_(s)?t():("function"==typeof this._events.hiResImageLoad&&this._events.hiResImageLoad(),this._events.hiResImageLoad=b(s,"load",t))}},{key:"_calculateDimensions",value:function(){var e=this._elements,t=e.image,n=e.container,i=e.snapView,o=e.snapImage,e=e.zoomHandle,a=parseInt(z(t,"width"),10),s=parseInt(z(t,"height"),10),r=parseInt(z(n,"width"),10),n=parseInt(z(n,"height"),10),l=i.clientWidth,c=i.clientHeight,u=(this._state.containerDim={w:r,h:n},a/s),s=s<a&&r<=n||r<u*n?r:u*n,a=s/u,u=(this._state.imageDim={w:s,h:a},z(t,{width:"".concat(s,"px"),height:"".concat(a,"px"),left:"".concat((r-s)/2,"px"),top:"".concat((n-a)/2,"px"),maxWidth:"none",maxHeight:"none"}),a<s?l:s*c/a),t=s<a?c:a*l/s,r=(this._state.snapImageDim={w:u,h:t},z(o,{width:"".concat(u,"px"),height:"".concat(t,"px")}),i.querySelector(".iv-zoom-slider").clientWidth);this._state.zoomSliderLength=r-e.offsetWidth}},{key:"resetZoom",value:function(){var e=this._options.zoomValue;0<arguments.length&&void 0!==arguments[0]&&!arguments[0]&&(this._state.zoomValue=e),this.zoom(e)}},{key:"load",value:function(e,t){this._images={imageSrc:e,hiResImageSrc:t},this._loadImages()}},{key:"destroy",value:function(){var e,t=this._elements,n=t.container,t=t.domElement;Object.entries(this._sliders).forEach(function(e){e=d(e,2);e[0],e[1].destroy()}),Object.entries(this._events).forEach(function(e){e=d(e,2);e[0],(0,e[1])()}),this._clearFrames(),y(n.querySelector(".iv-wrap")),function t(n,e){var i=e.split(" ");1<i.length?i.forEach(function(e){return t(n,e)}):n.classList?n.classList.remove(e):n.className=n.className.replace(new RegExp("(^|\\b)".concat(e.split(" ").join("|"),"(\\b|$)"),"gi")," ")}(n,"iv-container"),g(document.querySelector("html"),"relative"),t!==n&&(e=(n=t).parentNode)!==document.body&&(e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e)),t._imageViewer=null,this._listeners.onDestroy&&this._listeners.onDestroy()}},{key:"_callbackData",get:function(){return{container:this._elements.container,snapView:this._elements.snapView,zoomValue:this._state.zoomValue,reachedMin:Math.abs(this._state.zoomValue-100)<1,reachedMax:Math.abs(this._state.zoomValue-this._options.maxZoom)<1,instance:this}}}])}(),M=(V.defaults={zoomValue:100,snapView:!0,maxZoom:500,refreshOnResize:!0,zoomOnMouseWheel:!0,hasZoomButtons:!1,zoomStep:50,listeners:{onInit:null,onDestroy:null,onImageLoaded:null,onZoomChange:null}},function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(r(this,i),f({tagName:"div",className:"iv-fullscreen",html:'\n <div class="iv-fullscreen-container"></div>\n <div class="iv-fullscreen-close"></div>\n',parent:document.body})),n=o(this,i,[t.querySelector(".iv-fullscreen-container"),m(m({},e),{},{refreshOnResize:!1})]);return l(n,"hide",function(){z(n._elements.fullScreen,{display:"none"}),g(document.querySelector("html"),"overflow"),n._events.onWindowResize()}),n._elements.fullScreen=t,n._initFullScreenEvents(),n}var e=i,t=V;if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");return e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t),n(i,[{key:"_initFullScreenEvents",value:function(){var e=this._elements.fullScreen.querySelector(".iv-fullscreen-close");this._events.onCloseBtnClick=b(e,"click",this.hide)}},{key:"show",value:function(e,t){z(this._elements.fullScreen,{display:"block"}),e&&this.load(e,t),this._events.onWindowResize=b(window,"resize",this.refresh),z(document.querySelector("html"),{overflow:"hidden"})}},{key:"destroy",value:function(){var e=this._elements.fullScreen;a(s(i.prototype),"destroy",this).call(this),y(e)}}])}());return V.FullScreenViewer=M,V});