(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a="undefined"==typeof globalThis?a||self:globalThis,a.WZoom=b())})(this,function(){'use strict';var C=Math.min,D=Math.abs;function a(a,e){return b(a)||c(a,e)||d(a,e)||f()}function b(a){if(Array.isArray(a))return a}function c(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f=[],g=!0,h=!1;try{for(c=c.call(a);!(g=(d=c.next()).done)&&(f.push(d.value),!(b&&f.length===b));g=!0);}catch(a){h=!0,e=a}finally{try{g||null==c["return"]||c["return"]()}finally{if(h)throw e}}return f}}function d(a,b){if(a){if("string"==typeof a)return e(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?e(a,b):void 0}}function e(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c=this.options.maxScale&&(this.options.minScale=null),this.window.$element=this.content.$element.parentNode,"image"===this.options.type){var d=!1;this.content.$element.complete&&(this._init(),d=!0),d&&!0!==this.options.watchImageChange||k(this.content.$element,"load",this._init,!this.options.watchImageChange&&{once:!0})}else this._init()}function s(a){this.options.disableWheelZoom||(a.preventDefault(),this._transform(this._computeNewPosition(this._computeNewScale(a.deltaY),{x:n(a),y:o(a)})))}function t(a){(this.isTouch&&1===a.touches.length||1===a.buttons)&&(this.coordsOnMouseDown={x:n(a),y:o(a)})}function u(a){this.coordsOnMouseDown&&this.coordsOnMouseDown.x===n(a)&&this.coordsOnMouseDown.y===o(a)&&(this._transform(this._computeNewPosition(1===this.direction?this.content.maxScale:this.content.minScale,{x:n(a),y:o(a)})),this.direction*=-1),this.coordsOnMouseDown=null}function v(a){var b=Math.round,c=Math.sqrt,d=Math.pow;if(2===a.targetTouches.length){var e=a.targetTouches[0].clientX,f=a.targetTouches[0].clientY,g=a.targetTouches[1].clientX,h=a.targetTouches[1].clientY,i=b(c(d(D(e-g),2)+d(D(f-h),2))),j=0;if(i>this.fingersHypot+5&&(j=-1),ie?-1:1;e=((d-b)/2+c)*f}}return e}function B(a){var b=g(a.$element);return{x:b.left+a.originalWidth/2-h(),y:b.top+a.originalHeight/2-i()}}return p.prototype={constructor:p,window:null,content:null,isTouch:!1,isGrab:!1,events:null,moveTimer:null,options:{},coordinates:null,speed:null,_grabHandler:function(a){(this.isTouch&&1===a.touches.length||1===a.buttons)&&(a.preventDefault(),this.isGrab=!0,this.coordinates={left:n(a),top:o(a)},this.speed={x:0,y:0},k(document,this.events.drop,this._dropHandler,this.events.options),k(document,this.events.move,this._moveHandler,this.events.options),"function"==typeof this.options.onGrab&&this.options.onGrab(a))},_dropHandler:function(a){a.preventDefault(),this.isGrab=!1,l(document,this.events.drop,this._dropHandler),l(document,this.events.move,this._moveHandler),"function"==typeof this.options.onDrop&&this.options.onDrop(a)},_moveHandler:function(a){if(this.isTouch&&1a?1:-1;var b=this.content,c=b.minScale,d=b.maxScale,e=b.currentScale,f=e+this.direction/this.options.speed;return fd&&(this.direction=-1),fd?d:f},_computeNewPosition:function(a,b){var c=b.x,d=b.y,e=this.window,f=this.content,g=f.originalWidth*a,j=f.originalHeight*a,k=h(),l=i(),m=z(c,k,e.positionLeft,f.currentLeft,e.originalWidth,g/f.currentWidth),n=z(d,l,e.positionTop,f.currentTop,e.originalHeight,j/f.currentHeight);-1===this.direction&&(m=A(this.options,e.originalWidth,f.correctX,g,m),n=A(this.options,e.originalHeight,f.correctY,j,n)),a===this.content.minScale&&(m=this.content.alignPointX,n=this.content.alignPointY);var o={currentLeft:f.currentLeft,newLeft:m,currentTop:f.currentTop,newTop:n,currentScale:f.currentScale,newScale:a};return f.currentWidth=g,f.currentHeight=j,f.currentLeft=m,f.currentTop=n,f.currentScale=a,o},_transform:function(a){a.currentLeft;var b=a.newLeft;a.currentTop;var c=a.newTop;a.currentScale;var d=a.newScale;this.options.smoothExtinction?this.content.$element.style.transition="transform ".concat(this.options.smoothExtinction,"s"):this.content.$element.style.removeProperty("transition"),this.content.$element.style.transform="translate3d(".concat(b,"px, ").concat(c,"px, 0px) scale(").concat(d,")"),"function"==typeof this.options.rescale&&this.options.rescale()},_zoom:function(a,b){(void 0===b||void 0===b.x||void 0===b.y)&&(b=B(this.window)),this._transform(this._computeNewPosition(a,b))},prepare:function(){this._prepare()},zoomUp:function(){this._zoom(this._computeNewScale(-1))},zoomDown:function(){this._zoom(this._computeNewScale(1))},maxZoomUp:function(){this._zoom(this.content.maxScale)},maxZoomDown:function(){this._zoom(this.content.minScale)},zoomUpToPoint:function(a){this._zoom(this._computeNewScale(-1),a)},zoomDownToPoint:function(a){this._zoom(this._computeNewScale(1),a)},maxZoomUpToPoint:function(a){this._zoom(this.content.maxScale,a)},setDragScrollable:function(a){this.dragScrollable=a},destroy:function(){for(var a in this.content.$element.style.transform="","image"===this.options.type&&l(this.content.$element,"load",this._init),this.isTouch&&(l(this.content.$element,"touchmove",this._zoomTwoFingers_TouchmoveHandler),l(this.content.$element,"touchend",this._zoomTwoFingers_TouchendHandler)),l(this.content.$element,"wheel",this._wheelHandler),this.options.zoomOnClick&&(l(this.content.$element,this.events.down,this._downHandler,this.events.options),l(this.content.$element,this.events.up,this._upHandler,this.events.options)),this.dragScrollable&&this.dragScrollable.destroy(),this)this.hasOwnProperty(a)&&(this[a]=null)}},r.create=function(a,b){return new r(a,b)},r});