diff --git a/croppie.js b/croppie.js index 152d6cc9..376da39b 100755 --- a/croppie.js +++ b/croppie.js @@ -2,7 +2,7 @@ * Croppie * Copyright 2016 * Foliotek - * Version: 2.4.0 + * Version: 2.4.1 *************************/ (function (root, factory) { if (typeof define === 'function' && define.amd) { diff --git a/croppie.min.js b/croppie.min.js index 2e3337e0..4198e947 100644 --- a/croppie.min.js +++ b/croppie.min.js @@ -1 +1 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define(["exports"],factory)}else if(typeof exports==="object"&&typeof exports.nodeName!=="string"){factory(exports)}else{factory(root.commonJsStrict={})}})(this,function(exports){if(typeof Promise!=="function"){!function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError("A promise cannot be resolved with itself.");if(a&&("object"==typeof a||"function"==typeof a)){var c=a.then;if("function"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k="function"==typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};c.prototype["catch"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},"undefined"!=typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this)}if(typeof window.CustomEvent!=="function"){(function(){function CustomEvent(event,params){params=params||{bubbles:false,cancelable:false,detail:undefined};var evt=document.createEvent("CustomEvent");evt.initCustomEvent(event,params.bubbles,params.cancelable,params.detail);return evt}CustomEvent.prototype=window.Event.prototype;window.CustomEvent=CustomEvent})()}if(!HTMLCanvasElement.prototype.toBlob){Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(callback,type,quality){var binStr=atob(this.toDataURL(type,quality).split(",")[1]),len=binStr.length,arr=new Uint8Array(len);for(var i=0;i-1||v.indexOf("none")>-1){return Transform.fromMatrix(v)}else{return Transform.fromString(v)}};Transform.fromMatrix=function(v){var vals=v.substring(7).split(",");if(!vals.length||v==="none"){vals=[1,0,0,1,0,0]}return new Transform(num(vals[4]),num(vals[5]),parseFloat(vals[0]))};Transform.fromString=function(v){var values=v.split(") "),translate=values[0].substring(_TRANSLATE.length+1).split(","),scale=values.length>1?values[1].substring(6):1,x=translate.length>1?translate[0]:0,y=translate.length>1?translate[1]:0;return new Transform(x,y,scale)};Transform.prototype.toString=function(){return _TRANSLATE+"("+this.x+"px, "+this.y+"px"+_TRANSLATE_SUFFIX+") scale("+this.scale+")"};var TransformOrigin=function(el){if(!el||!el.style[CSS_TRANS_ORG]){this.x=0;this.y=0;return}var css=el.style[CSS_TRANS_ORG].split(" ");this.x=parseFloat(css[0]);this.y=parseFloat(css[1])};TransformOrigin.prototype.toString=function(){return this.x+"px "+this.y+"px"};function getExifOrientation(img,cb){if(!window.EXIF){cb(0)}EXIF.getData(img,function(){var orientation=EXIF.getTag(this,"Orientation");cb(orientation)})}function drawCanvas(canvas,img,orientation){var width=img.width,height=img.height,ctx=canvas.getContext("2d");canvas.width=img.width;canvas.height=img.height;ctx.save();switch(orientation){case 2:ctx.translate(width,0);ctx.scale(-1,1);break;case 3:ctx.translate(width,height);ctx.rotate(180*Math.PI/180);break;case 4:ctx.translate(0,height);ctx.scale(1,-1);break;case 5:canvas.width=height;canvas.height=width;ctx.rotate(90*Math.PI/180);ctx.scale(1,-1);break;case 6:canvas.width=height;canvas.height=width;ctx.rotate(90*Math.PI/180);ctx.translate(0,-height);break;case 7:canvas.width=height;canvas.height=width;ctx.rotate(-90*Math.PI/180);ctx.translate(-width,height);ctx.scale(1,-1);break;case 8:canvas.width=height;canvas.height=width;ctx.translate(0,width);ctx.rotate(-90*Math.PI/180);break}ctx.drawImage(img,0,0,width,height);ctx.restore()}function _create(){var self=this,contClass="croppie-container",customViewportClass=self.options.viewport.type?"cr-vp-"+self.options.viewport.type:null,boundary,img,viewport,overlay,canvas,bw,bh;self.options.useCanvas=self.options.enableOrientation||_hasExif.call(self);self.data={};self.elements={};boundary=self.elements.boundary=document.createElement("div");viewport=self.elements.viewport=document.createElement("div");img=self.elements.img=document.createElement("img");overlay=self.elements.overlay=document.createElement("div");if(self.options.useCanvas){self.elements.canvas=document.createElement("canvas");self.elements.preview=self.elements.canvas}else{self.elements.preview=self.elements.img}addClass(boundary,"cr-boundary");bw=self.options.boundary.width;bh=self.options.boundary.height;css(boundary,{width:bw+(isNaN(bw)?"":"px"),height:bh+(isNaN(bh)?"":"px")});addClass(viewport,"cr-viewport");if(customViewportClass){addClass(viewport,customViewportClass)}css(viewport,{width:self.options.viewport.width+"px",height:self.options.viewport.height+"px"});viewport.setAttribute("tabindex",0);addClass(self.elements.preview,"cr-image");addClass(overlay,"cr-overlay");self.element.appendChild(boundary);boundary.appendChild(self.elements.preview);boundary.appendChild(viewport);boundary.appendChild(overlay);addClass(self.element,contClass);if(self.options.customClass){addClass(self.element,self.options.customClass)}_initDraggable.call(this);if(self.options.enableZoom){_initializeZoom.call(self)}}function _initRotationControls(){return;var self=this,wrap,btnLeft,btnRight,iLeft,iRight;wrap=document.createElement("div");self.elements.orientationBtnLeft=btnLeft=document.createElement("button");self.elements.orientationBtnRight=btnRight=document.createElement("button");wrap.appendChild(btnLeft);wrap.appendChild(btnRight);iLeft=document.createElement("i");iRight=document.createElement("i");btnLeft.appendChild(iLeft);btnRight.appendChild(iRight);addClass(wrap,"cr-rotate-controls");addClass(btnLeft,"cr-rotate-l");addClass(btnRight,"cr-rotate-r");self.elements.boundary.appendChild(wrap);btnLeft.addEventListener("click",function(){self.rotate(-90)});btnRight.addEventListener("click",function(){self.rotate(90)})}function _hasExif(){return this.options.enableExif&&window.EXIF}function _setZoomerVal(v){if(this.options.enableZoom){var z=this.elements.zoomer,val=fix(v,4);z.value=Math.max(z.min,Math.min(z.max,val))}}function _initializeZoom(){var self=this,wrap=self.elements.zoomerWrap=document.createElement("div"),zoomer=self.elements.zoomer=document.createElement("input");addClass(wrap,"cr-slider-wrap");addClass(zoomer,"cr-slider");zoomer.type="range";zoomer.step="0.0001";zoomer.value=1;zoomer.style.display=self.options.showZoomer?"":"none";self.element.appendChild(wrap);wrap.appendChild(zoomer);self._currentZoom=1;function change(){_onZoom.call(self,{value:parseFloat(zoomer.value),origin:new TransformOrigin(self.elements.preview),viewportRect:self.elements.viewport.getBoundingClientRect(),transform:Transform.parse(self.elements.preview)})}function scroll(ev){var delta,targetZoom;if(ev.wheelDelta){delta=ev.wheelDelta/1200}else if(ev.deltaY){delta=ev.deltaY/1060}else if(ev.detail){delta=ev.detail/-60}else{delta=0}targetZoom=self._currentZoom+delta*self._currentZoom;ev.preventDefault();_setZoomerVal.call(self,targetZoom);change.call(self)}self.elements.zoomer.addEventListener("input",change);self.elements.zoomer.addEventListener("change",change);if(self.options.mouseWheelZoom){self.elements.boundary.addEventListener("mousewheel",scroll);self.elements.boundary.addEventListener("DOMMouseScroll",scroll)}}function _onZoom(ui){var self=this,transform=ui?ui.transform:Transform.parse(self.elements.preview),vpRect=ui?ui.viewportRect:self.elements.viewport.getBoundingClientRect(),origin=ui?ui.origin:new TransformOrigin(self.elements.preview),transCss={};function applyCss(){var transCss={};transCss[CSS_TRANSFORM]=transform.toString();transCss[CSS_TRANS_ORG]=origin.toString();css(self.elements.preview,transCss)}self._currentZoom=ui?ui.value:self._currentZoom;transform.scale=self._currentZoom;applyCss();if(self.options.enforceBoundary){var boundaries=_getVirtualBoundaries.call(self,vpRect),transBoundaries=boundaries.translate,oBoundaries=boundaries.origin;if(transform.x>=transBoundaries.maxX){origin.x=oBoundaries.minX;transform.x=transBoundaries.maxX}if(transform.x<=transBoundaries.minX){origin.x=oBoundaries.maxX;transform.x=transBoundaries.minX}if(transform.y>=transBoundaries.maxY){origin.y=oBoundaries.minY;transform.y=transBoundaries.maxY}if(transform.y<=transBoundaries.minY){origin.y=oBoundaries.maxY;transform.y=transBoundaries.minY}}applyCss();_debouncedOverlay.call(self);_triggerUpdate.call(self)}function _getVirtualBoundaries(viewport){var self=this,scale=self._currentZoom,vpWidth=viewport.width,vpHeight=viewport.height,centerFromBoundaryX=self.elements.boundary.clientWidth/2,centerFromBoundaryY=self.elements.boundary.clientHeight/2,imgRect=self.elements.preview.getBoundingClientRect(),curImgWidth=imgRect.width,curImgHeight=imgRect.height,halfWidth=vpWidth/2,halfHeight=vpHeight/2;var maxX=(halfWidth/scale-centerFromBoundaryX)*-1;var minX=maxX-(curImgWidth*(1/scale)-vpWidth*(1/scale));var maxY=(halfHeight/scale-centerFromBoundaryY)*-1;var minY=maxY-(curImgHeight*(1/scale)-vpHeight*(1/scale));var originMinX=1/scale*halfWidth;var originMaxX=curImgWidth*(1/scale)-originMinX;var originMinY=1/scale*halfHeight;var originMaxY=curImgHeight*(1/scale)-originMinY;return{translate:{maxX:maxX,minX:minX,maxY:maxY,minY:minY},origin:{maxX:originMaxX,minX:originMinX,maxY:originMaxY,minY:originMinY}}}function _updateCenterPoint(){var self=this,scale=self._currentZoom,data=self.elements.preview.getBoundingClientRect(),vpData=self.elements.viewport.getBoundingClientRect(),transform=Transform.parse(self.elements.preview.style[CSS_TRANSFORM]),pc=new TransformOrigin(self.elements.preview),top=vpData.top-data.top+vpData.height/2,left=vpData.left-data.left+vpData.width/2,center={},adj={};center.y=top/scale;center.x=left/scale;adj.y=(center.y-pc.y)*(1-scale);adj.x=(center.x-pc.x)*(1-scale);transform.x-=adj.x;transform.y-=adj.y;var newCss={};newCss[CSS_TRANS_ORG]=center.x+"px "+center.y+"px";newCss[CSS_TRANSFORM]=transform.toString();css(self.elements.preview,newCss)}function _initDraggable(){var self=this,isDragging=false,originalX,originalY,originalDistance,vpRect,transform;function assignTransformCoordinates(deltaX,deltaY){var imgRect=self.elements.preview.getBoundingClientRect(),top=transform.y+deltaY,left=transform.x+deltaX;if(self.options.enforceBoundary){if(vpRect.top>imgRect.top+deltaY&&vpRect.bottomimgRect.left+deltaX&&vpRect.right=37&&ev.keyCode<=40){ev.preventDefault();var movement=parseKeyDown(ev.keyCode);transform=Transform.parse(self.elements.preview);document.body.style[CSS_USERSELECT]="none";vpRect=self.elements.viewport.getBoundingClientRect();keyMove(movement)}function parseKeyDown(key){switch(key){case LEFT_ARROW:return[1,0];case UP_ARROW:return[0,1];case RIGHT_ARROW:return[-1,0];case DOWN_ARROW:return[0,-1]}}}function keyMove(movement){var deltaX=movement[0],deltaY=movement[1],newCss={};assignTransformCoordinates(deltaX,deltaY);newCss[CSS_TRANSFORM]=transform.toString();css(self.elements.preview,newCss);_updateOverlay.call(self);document.body.style[CSS_USERSELECT]="";_updateCenterPoint.call(self);_triggerUpdate.call(self);originalDistance=0}function mouseDown(ev){ev.preventDefault();if(isDragging)return;isDragging=true;originalX=ev.pageX;originalY=ev.pageY;if(ev.touches){var touches=ev.touches[0];originalX=touches.pageX;originalY=touches.pageY}transform=Transform.parse(self.elements.preview);window.addEventListener("mousemove",mouseMove);window.addEventListener("touchmove",mouseMove);window.addEventListener("mouseup",mouseUp);window.addEventListener("touchend",mouseUp);document.body.style[CSS_USERSELECT]="none";vpRect=self.elements.viewport.getBoundingClientRect()}function mouseMove(ev){ev.preventDefault();var pageX=ev.pageX,pageY=ev.pageY;if(ev.touches){var touches=ev.touches[0];pageX=touches.pageX;pageY=touches.pageY}var deltaX=pageX-originalX,deltaY=pageY-originalY,newCss={};if(ev.type=="touchmove"){if(ev.touches.length>1){var touch1=ev.touches[0];var touch2=ev.touches[1];var dist=Math.sqrt((touch1.pageX-touch2.pageX)*(touch1.pageX-touch2.pageX)+(touch1.pageY-touch2.pageY)*(touch1.pageY-touch2.pageY));if(!originalDistance){originalDistance=dist/self._currentZoom}var scale=dist/originalDistance;_setZoomerVal.call(self,scale);dispatchChange(self.elements.zoomer);return}}assignTransformCoordinates(deltaX,deltaY);newCss[CSS_TRANSFORM]=transform.toString();css(self.elements.preview,newCss);_updateOverlay.call(self);originalY=pageY;originalX=pageX}function mouseUp(){isDragging=false;window.removeEventListener("mousemove",mouseMove);window.removeEventListener("touchmove",mouseMove);window.removeEventListener("mouseup",mouseUp);window.removeEventListener("touchend",mouseUp);document.body.style[CSS_USERSELECT]="";_updateCenterPoint.call(self);_triggerUpdate.call(self);originalDistance=0}self.elements.overlay.addEventListener("mousedown",mouseDown);self.elements.viewport.addEventListener("keydown",keyDown);self.elements.overlay.addEventListener("touchstart",mouseDown)}function _updateOverlay(){var self=this,boundRect=self.elements.boundary.getBoundingClientRect(),imgData=self.elements.preview.getBoundingClientRect();css(self.elements.overlay,{width:imgData.width+"px",height:imgData.height+"px",top:imgData.top-boundRect.top+"px",left:imgData.left-boundRect.left+"px"})}var _debouncedOverlay=debounce(_updateOverlay,500);function _triggerUpdate(){var self=this,data=self.get(),ev;if(!_isVisible.call(self)){return}self.options.update.call(self,data);if(self.$){self.$(self.element).trigger("update",data)}else{var ev;if(window.CustomEvent){ev=new CustomEvent("update",{detail:data})}else{ev=document.createEvent("CustomEvent");ev.initCustomEvent("update",true,true,data)}self.element.dispatchEvent(ev)}}function _isVisible(){return this.elements.preview.offsetHeight>0&&this.elements.preview.offsetWidth>0}function _updatePropertiesFromImage(){var self=this,minZoom=0,maxZoom=1.5,initialZoom=1,cssReset={},img=self.elements.preview,zoomer=self.elements.zoomer,transformReset=new Transform(0,0,initialZoom),originReset=new TransformOrigin,isVisible=_isVisible.call(self),imgData,vpData,boundaryData,minW,minH;if(!isVisible||self.data.bound){return}self.data.bound=true;cssReset[CSS_TRANSFORM]=transformReset.toString();cssReset[CSS_TRANS_ORG]=originReset.toString();cssReset["opacity"]=1;css(img,cssReset);imgData=img.getBoundingClientRect();vpData=self.elements.viewport.getBoundingClientRect();boundaryData=self.elements.boundary.getBoundingClientRect();self._originalImageWidth=imgData.width;self._originalImageHeight=imgData.height;if(self.options.enableZoom){if(self.options.enforceBoundary){minW=vpData.width/imgData.width;minH=vpData.height/imgData.height;minZoom=Math.max(minW,minH)}if(minZoom>=maxZoom){maxZoom=minZoom+1}zoomer.min=fix(minZoom,4);zoomer.max=fix(maxZoom,4);var defaultInitialZoom=Math.max(boundaryData.width/imgData.width,boundaryData.height/imgData.height);initialZoom=self.data.boundZoom!==null?self.data.boundZoom:defaultInitialZoom;_setZoomerVal.call(self,initialZoom);dispatchChange(zoomer)}else{self._currentZoom=initialZoom}transformReset.scale=self._currentZoom;cssReset[CSS_TRANSFORM]=transformReset.toString();css(img,cssReset);if(self.data.points.length){_bindPoints.call(self,self.data.points)}else{_centerImage.call(self)}_updateCenterPoint.call(self);_updateOverlay.call(self)}function _bindPoints(points){if(points.length!=4){throw"Croppie - Invalid number of points supplied: "+points}var self=this,pointsWidth=points[2]-points[0],vpData=self.elements.viewport.getBoundingClientRect(),boundRect=self.elements.boundary.getBoundingClientRect(),vpOffset={left:vpData.left-boundRect.left,top:vpData.top-boundRect.top},scale=vpData.width/pointsWidth,originTop=points[1],originLeft=points[0],transformTop=-1*points[1]+vpOffset.top,transformLeft=-1*points[0]+vpOffset.left,newCss={};newCss[CSS_TRANS_ORG]=originLeft+"px "+originTop+"px";newCss[CSS_TRANSFORM]=new Transform(transformLeft,transformTop,scale).toString();css(self.elements.preview,newCss);_setZoomerVal.call(self,scale);self._currentZoom=scale}function _centerImage(){var self=this,imgDim=self.elements.preview.getBoundingClientRect(),vpDim=self.elements.viewport.getBoundingClientRect(),boundDim=self.elements.boundary.getBoundingClientRect(),vpLeft=vpDim.left-boundDim.left,vpTop=vpDim.top-boundDim.top,w=vpLeft-(imgDim.width-vpDim.width)/2,h=vpTop-(imgDim.height-vpDim.height)/2,transform=new Transform(w,h,self._currentZoom);css(self.elements.preview,CSS_TRANSFORM,transform.toString())}function _transferImageToCanvas(customOrientation){var self=this,canvas=self.elements.canvas,img=self.elements.img,ctx=canvas.getContext("2d"),exif=_hasExif.call(self),customOrientation=self.options.enableOrientation&&customOrientation;ctx.clearRect(0,0,canvas.width,canvas.height);canvas.width=img.width;canvas.height=img.height;if(exif){getExifOrientation(img,function(orientation){drawCanvas(canvas,img,num(orientation,10));if(customOrientation){drawCanvas(canvas,img,customOrientation)}})}else if(customOrientation){drawCanvas(canvas,img,customOrientation)}}function _getCanvas(data){var self=this,points=data.points,left=num(points[0]),top=num(points[1]),width=points[2]-points[0],height=points[3]-points[1],circle=data.circle,canvas=document.createElement("canvas"),ctx=canvas.getContext("2d"),outWidth=width,outHeight=height,startX=0,startY=0;if(data.outputWidth&&data.outputHeight){outWidth=data.outputWidth;outHeight=data.outputHeight}canvas.width=outWidth;canvas.height=outHeight;if(data.backgroundColor){ctx.fillStyle=data.backgroundColor;ctx.fillRect(0,0,outWidth,outHeight)}if(left<0){startX=Math.abs(left);left=0}if(top<0){startY=Math.abs(top);top=0}if(left+width>self._originalImageWidth){width=self._originalImageWidth-left;outWidth=width}if(top+height>self._originalImageHeight){height=self._originalImageHeight-top;outHeight=height}ctx.drawImage(this.elements.preview,left,top,width,height,startX,startY,outWidth,outHeight);if(circle){ctx.fillStyle="#fff";ctx.globalCompositeOperation="destination-in";ctx.beginPath();ctx.arc(outWidth/2,outHeight/2,outWidth/2,0,Math.PI*2,true);ctx.closePath();ctx.fill()}return canvas}function _getHtmlResult(data){var points=data.points,div=document.createElement("div"),img=document.createElement("img"),width=points[2]-points[0],height=points[3]-points[1];addClass(div,"croppie-result");div.appendChild(img);css(img,{left:-1*points[0]+"px",top:-1*points[1]+"px"});img.src=data.url;css(div,{width:width+"px",height:height+"px"});return div}function _getBase64Result(data){return _getCanvas.call(this,data).toDataURL(data.format,data.quality)}function _getBlobResult(data){var self=this;return new Promise(function(resolve,reject){_getCanvas.call(self,data).toBlob(function(blob){resolve(blob)},data.format,data.quality)})}function _bind(options,cb){var self=this,url,points=[],zoom=null;if(typeof options==="string"){url=options;options={}}else if(Array.isArray(options)){points=options.slice()}else if(typeof options=="undefined"&&self.data.url){_updatePropertiesFromImage.call(self);_triggerUpdate.call(self);return null}else{url=options.url;points=options.points||[];zoom=typeof options.zoom==="undefined"?null:options.zoom}self.data.bound=false;self.data.url=url||self.data.url;self.data.points=(points||self.data.points).map(function(p){return parseFloat(p)});self.data.boundZoom=zoom;var prom=loadImage(url,self.elements.img,self.options.useCanvas);prom.then(function(){if(self.options.useCanvas){self.elements.img.exifdata=null;_transferImageToCanvas.call(self,options.orientation||1)}_updatePropertiesFromImage.call(self);_triggerUpdate.call(self);if(cb){cb()}});return prom}function fix(v,decimalPoints){return parseFloat(v).toFixed(decimalPoints||0)}function _get(){var self=this,imgData=self.elements.preview.getBoundingClientRect(),vpData=self.elements.viewport.getBoundingClientRect(),x1=vpData.left-imgData.left,y1=vpData.top-imgData.top,widthDiff=(vpData.width-self.elements.viewport.offsetWidth)/2,heightDiff=(vpData.height-self.elements.viewport.offsetHeight)/2,x2=x1+self.elements.viewport.offsetWidth+widthDiff,y2=y1+self.elements.viewport.offsetHeight+heightDiff,scale=self._currentZoom;if(scale===Infinity||isNaN(scale)){scale=1}var max=self.options.enforceBoundary?0:Number.NEGATIVE_INFINITY;x1=Math.max(max,x1/scale);y1=Math.max(max,y1/scale);x2=Math.max(max,x2/scale);y2=Math.max(max,y2/scale);return{points:[fix(x1),fix(y1),fix(x2),fix(y2)],zoom:scale}}var RESULT_DEFAULTS={type:"canvas",format:"png",quality:1},RESULT_FORMATS=["jpeg","webp","png"];function _result(options){var self=this,data=_get.call(self),opts=deepExtend(RESULT_DEFAULTS,deepExtend({},options)),resultType=typeof options==="string"?options:opts.type||"base64",size=opts.size,format=opts.format,quality=opts.quality,backgroundColor=opts.backgroundColor,circle=typeof opts.circle==="boolean"?opts.circle:self.options.viewport.type==="circle",vpRect=self.elements.viewport.getBoundingClientRect(),ratio=vpRect.width/vpRect.height,prom;if(size==="viewport"){data.outputWidth=vpRect.width;data.outputHeight=vpRect.height}else if(typeof size==="object"){if(size.width&&size.height){data.outputWidth=size.width;data.outputHeight=size.height}else if(size.width){data.outputWidth=size.width;data.outputHeight=size.width/ratio}else if(size.height){data.outputWidth=size.height*ratio;data.outputHeight=size.height}}if(RESULT_FORMATS.indexOf(format)>-1){data.format="image/"+format;data.quality=quality}data.circle=circle;data.url=self.data.url;data.backgroundColor=backgroundColor;prom=new Promise(function(resolve,reject){switch(resultType.toLowerCase()){case"rawcanvas":resolve(_getCanvas.call(self,data));break;case"canvas":case"base64":resolve(_getBase64Result.call(self,data));break;case"blob":_getBlobResult.call(self,data).then(resolve);break;default:resolve(_getHtmlResult.call(self,data));break}});return prom}function _refresh(){_updatePropertiesFromImage.call(this)}function _rotate(deg){if(!this.options.useCanvas){throw"Croppie: Cannot rotate without enableOrientation"}var self=this,canvas=self.elements.canvas,img=self.elements.img,copy=document.createElement("canvas"),ornt=1;copy.width=canvas.width;copy.height=canvas.height;var ctx=copy.getContext("2d");ctx.drawImage(canvas,0,0);if(deg===90||deg===-270)ornt=6;if(deg===-90||deg===270)ornt=8;if(deg===180||deg===-180)ornt=3;drawCanvas(canvas,copy,ornt);_onZoom.call(self)}function _destroy(){var self=this;self.element.removeChild(self.elements.boundary);removeClass(self.element,"croppie-container");if(self.options.enableZoom){self.element.removeChild(self.elements.zoomerWrap)}delete self.elements}if(window.jQuery){var $=window.jQuery;$.fn.croppie=function(opts){var ot=typeof opts;if(ot==="string"){var args=Array.prototype.slice.call(arguments,1);var singleInst=$(this).data("croppie");if(opts==="get"){return singleInst.get()}else if(opts==="result"){return singleInst.result.apply(singleInst,args)}else if(opts==="bind"){return singleInst.bind.apply(singleInst,args)}return this.each(function(){var i=$(this).data("croppie");if(!i)return;var method=i[opts];if($.isFunction(method)){method.apply(i,args);if(opts==="destroy"){$(this).removeData("croppie")}}else{throw"Croppie "+opts+" method not found"}})}else{return this.each(function(){var i=new Croppie(this,opts);i.$=$;$(this).data("croppie",i)})}}}function Croppie(element,opts){this.element=element;this.options=deepExtend(deepExtend({},Croppie.defaults),opts);if(this.element.tagName.toLowerCase()==="img"){var origImage=this.element;addClass(origImage,"cr-original-image");var replacementDiv=document.createElement("div");this.element.parentNode.appendChild(replacementDiv);replacementDiv.appendChild(origImage);this.element=replacementDiv;this.options.url=this.options.url||origImage.src}_create.call(this);if(this.options.url){var bindOpts={url:this.options.url,points:this.options.points};delete this.options["url"];delete this.options["points"];_bind.call(this,bindOpts)}}Croppie.defaults={viewport:{width:100,height:100,type:"square"},boundary:{},orientationControls:{enabled:true,leftClass:"",rightClass:""},customClass:"",showZoomer:true,enableZoom:true,mouseWheelZoom:true,enableExif:false,enforceBoundary:true,enableOrientation:false,update:function(){}};deepExtend(Croppie.prototype,{bind:function(options,cb){return _bind.call(this,options,cb)},get:function(){return _get.call(this)},result:function(type){return _result.call(this,type)},refresh:function(){return _refresh.call(this)},setZoom:function(v){_setZoomerVal.call(this,v);dispatchChange(this.elements.zoomer)},rotate:function(deg){_rotate.call(this,deg)},destroy:function(){return _destroy.call(this)}});exports.Croppie=window.Croppie=Croppie;if(typeof module==="object"&&!!module.exports){module.exports=Croppie}}); \ No newline at end of file +!function(e,t){"function"==typeof define&&define.amd?define(["exports"],t):t("object"==typeof exports&&"string"!=typeof exports.nodeName?exports:e.commonJsStrict={})}(this,function(exports){function e(e){if(e in O)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=N.length;n--;)if(e=N[n]+t,e in O)return e}function t(e,n){e=e||{};for(var i in n)n[i]&&n[i].constructor&&n[i].constructor===Object?(e[i]=e[i]||{},t(e[i],n[i])):e[i]=n[i];return e}function n(e,t,n){var i;return function(){var o=this,r=arguments,a=function(){i=null,n||e.apply(o,r)},l=n&&!i;clearTimeout(i),i=setTimeout(a,t),l&&e.apply(o,r)}}function i(e){if("createEvent"in document){var t=document.createEvent("HTMLEvents");t.initEvent("change",!1,!0),e.dispatchEvent(t)}else e.fireEvent("onchange")}function o(e,t,n){if("string"==typeof t){var i=t;t={},t[i]=n}for(var o in t)e.style[o]=t[o]}function r(e,t){e.classList?e.classList.add(t):e.className+=" "+t}function a(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(t,"")}function l(e){return parseInt(e,10)}function s(e,t){var n=t||new Image;return n.style.opacity=0,new Promise(function(t){n.src===e?t(n):(n.removeAttribute("crossOrigin"),e.match(/^https?:\/\/|^\/\//)&&n.setAttribute("crossOrigin","anonymous"),n.onload=function(){setTimeout(function(){t(n)},1)},n.src=e)})}function u(e,t){window.EXIF||t(0),EXIF.getData(e,function(){var e=EXIF.getTag(this,"Orientation");t(e)})}function c(e,t,n){var i=t.width,o=t.height,r=e.getContext("2d");switch(e.width=t.width,e.height=t.height,r.save(),n){case 2:r.translate(i,0),r.scale(-1,1);break;case 3:r.translate(i,o),r.rotate(180*Math.PI/180);break;case 4:r.translate(0,o),r.scale(1,-1);break;case 5:e.width=o,e.height=i,r.rotate(90*Math.PI/180),r.scale(1,-1);break;case 6:e.width=o,e.height=i,r.rotate(90*Math.PI/180),r.translate(0,-o);break;case 7:e.width=o,e.height=i,r.rotate(-90*Math.PI/180),r.translate(-i,o),r.scale(1,-1);break;case 8:e.width=o,e.height=i,r.translate(0,i),r.rotate(-90*Math.PI/180)}r.drawImage(t,0,0,i,o),r.restore()}function h(){var e,t,n,i,a,l,s=this,u="croppie-container",c=s.options.viewport.type?"cr-vp-"+s.options.viewport.type:null;s.options.useCanvas=s.options.enableOrientation||p.call(s),s.data={},s.elements={},e=s.elements.boundary=document.createElement("div"),n=s.elements.viewport=document.createElement("div"),t=s.elements.img=document.createElement("img"),i=s.elements.overlay=document.createElement("div"),s.options.useCanvas?(s.elements.canvas=document.createElement("canvas"),s.elements.preview=s.elements.canvas):s.elements.preview=s.elements.img,r(e,"cr-boundary"),a=s.options.boundary.width,l=s.options.boundary.height,o(e,{width:a+(isNaN(a)?"":"px"),height:l+(isNaN(l)?"":"px")}),r(n,"cr-viewport"),c&&r(n,c),o(n,{width:s.options.viewport.width+"px",height:s.options.viewport.height+"px"}),n.setAttribute("tabindex",0),r(s.elements.preview,"cr-image"),r(i,"cr-overlay"),s.element.appendChild(e),e.appendChild(s.elements.preview),e.appendChild(n),e.appendChild(i),r(s.element,u),s.options.customClass&&r(s.element,s.options.customClass),w.call(this),s.options.enableZoom&&d.call(s)}function p(){return this.options.enableExif&&window.EXIF}function m(e){if(this.options.enableZoom){var t=this.elements.zoomer,n=F(e,4);t.value=Math.max(t.min,Math.min(t.max,n))}}function d(){function e(){f.call(n,{value:parseFloat(o.value),origin:new D(n.elements.preview),viewportRect:n.elements.viewport.getBoundingClientRect(),transform:T.parse(n.elements.preview)})}function t(t){var i,o;i=t.wheelDelta?t.wheelDelta/1200:t.deltaY?t.deltaY/1060:t.detail?t.detail/-60:0,o=n._currentZoom+i*n._currentZoom,t.preventDefault(),m.call(n,o),e.call(n)}var n=this,i=n.elements.zoomerWrap=document.createElement("div"),o=n.elements.zoomer=document.createElement("input");r(i,"cr-slider-wrap"),r(o,"cr-slider"),o.type="range",o.step="0.0001",o.value=1,o.style.display=n.options.showZoomer?"":"none",n.element.appendChild(i),i.appendChild(o),n._currentZoom=1,n.elements.zoomer.addEventListener("input",e),n.elements.zoomer.addEventListener("change",e),n.options.mouseWheelZoom&&(n.elements.boundary.addEventListener("mousewheel",t),n.elements.boundary.addEventListener("DOMMouseScroll",t))}function f(e){function t(){var e={};e[z]=i.toString(),e[S]=a.toString(),o(n.elements.preview,e)}var n=this,i=e?e.transform:T.parse(n.elements.preview),r=e?e.viewportRect:n.elements.viewport.getBoundingClientRect(),a=e?e.origin:new D(n.elements.preview);if(n._currentZoom=e?e.value:n._currentZoom,i.scale=n._currentZoom,t(),n.options.enforceBoundary){var l=v.call(n,r),s=l.translate,u=l.origin;i.x>=s.maxX&&(a.x=u.minX,i.x=s.maxX),i.x<=s.minX&&(a.x=u.maxX,i.x=s.minX),i.y>=s.maxY&&(a.y=u.minY,i.y=s.maxY),i.y<=s.minY&&(a.y=u.maxY,i.y=s.minY)}t(),q.call(n),b.call(n)}function v(e){var t=this,n=t._currentZoom,i=e.width,o=e.height,r=t.elements.boundary.clientWidth/2,a=t.elements.boundary.clientHeight/2,l=t.elements.preview.getBoundingClientRect(),s=l.width,u=l.height,c=i/2,h=o/2,p=-1*(c/n-r),m=p-(s*(1/n)-i*(1/n)),d=-1*(h/n-a),f=d-(u*(1/n)-o*(1/n)),v=1/n*c,g=s*(1/n)-v,w=1/n*h,y=u*(1/n)-w;return{translate:{maxX:p,minX:m,maxY:d,minY:f},origin:{maxX:g,minX:v,maxY:y,minY:w}}}function g(){var e=this,t=e._currentZoom,n=e.elements.preview.getBoundingClientRect(),i=e.elements.viewport.getBoundingClientRect(),r=T.parse(e.elements.preview.style[z]),a=new D(e.elements.preview),l=i.top-n.top+i.height/2,s=i.left-n.left+i.width/2,u={},c={};u.y=l/t,u.x=s/t,c.y=(u.y-a.y)*(1-t),c.x=(u.x-a.x)*(1-t),r.x-=c.x,r.y-=c.y;var h={};h[S]=u.x+"px "+u.y+"px",h[z]=r.toString(),o(e.elements.preview,h)}function w(){function e(e,t){var n=d.elements.preview.getBoundingClientRect(),i=p.y+t,o=p.x+e;d.options.enforceBoundary?(h.top>n.top+t&&h.bottomn.left+e&&h.right=37&&e.keyCode<=40){e.preventDefault();var l=t(e.keyCode);p=T.parse(d.elements.preview),document.body.style[P]="none",h=d.elements.viewport.getBoundingClientRect(),n(l)}}else{var s=0;s=e.keyCode==o?parseFloat(d.elements.zoomer.value,10)+parseFloat(d.elements.zoomer.step,10):parseFloat(d.elements.zoomer.value,10)-parseFloat(d.elements.zoomer.step,10),d.setZoom(s)}}function n(t){var n=t[0],i=t[1],r={};e(n,i),r[z]=p.toString(),o(d.elements.preview,r),y.call(d),document.body.style[P]="",g.call(d),b.call(d),c=0}function r(e){if(e.preventDefault(),!f){if(f=!0,s=e.pageX,u=e.pageY,e.touches){var t=e.touches[0];s=t.pageX,u=t.pageY}p=T.parse(d.elements.preview),window.addEventListener("mousemove",a),window.addEventListener("touchmove",a),window.addEventListener("mouseup",l),window.addEventListener("touchend",l),document.body.style[P]="none",h=d.elements.viewport.getBoundingClientRect()}}function a(t){t.preventDefault();var n=t.pageX,r=t.pageY;if(t.touches){var a=t.touches[0];n=a.pageX,r=a.pageY}var l=n-s,h=r-u,f={};if("touchmove"==t.type&&t.touches.length>1){var v=t.touches[0],g=t.touches[1],w=Math.sqrt((v.pageX-g.pageX)*(v.pageX-g.pageX)+(v.pageY-g.pageY)*(v.pageY-g.pageY));c||(c=w/d._currentZoom);var b=w/c;return m.call(d,b),void i(d.elements.zoomer)}e(l,h),f[z]=p.toString(),o(d.elements.preview,f),y.call(d),u=r,s=n}function l(){f=!1,window.removeEventListener("mousemove",a),window.removeEventListener("touchmove",a),window.removeEventListener("mouseup",l),window.removeEventListener("touchend",l),document.body.style[P]="",g.call(d),b.call(d),c=0}var s,u,c,h,p,d=this,f=!1;d.elements.overlay.addEventListener("mousedown",r),d.elements.viewport.addEventListener("keydown",t),d.elements.overlay.addEventListener("touchstart",r)}function y(){var e=this,t=e.elements.boundary.getBoundingClientRect(),n=e.elements.preview.getBoundingClientRect();o(e.elements.overlay,{width:n.width+"px",height:n.height+"px",top:n.top-t.top+"px",left:n.left-t.left+"px"})}function b(){var e,t=this,n=t.get();if(x.call(t))if(t.options.update.call(t,n),t.$&&"undefined"==typeof Prototype)t.$(t.element).trigger("update",n);else{var e;window.CustomEvent?e=new CustomEvent("update",{detail:n}):(e=document.createEvent("CustomEvent"),e.initCustomEvent("update",!0,!0,n)),t.element.dispatchEvent(e)}}function x(){return this.elements.preview.offsetHeight>0&&this.elements.preview.offsetWidth>0}function C(){var e,t,n,r,a,l=this,s=0,u=1.5,c=1,h={},p=l.elements.preview,d=l.elements.zoomer,f=new T(0,0,c),v=new D,w=x.call(l);if(w&&!l.data.bound){if(l.data.bound=!0,h[z]=f.toString(),h[S]=v.toString(),h.opacity=1,o(p,h),e=p.getBoundingClientRect(),t=l.elements.viewport.getBoundingClientRect(),n=l.elements.boundary.getBoundingClientRect(),l._originalImageWidth=e.width,l._originalImageHeight=e.height,l.options.enableZoom){l.options.enforceBoundary&&(r=t.width/e.width,a=t.height/e.height,s=Math.max(r,a)),s>=u&&(u=s+1),d.min=F(s,4),d.max=F(u,4);var b=Math.max(n.width/e.width,n.height/e.height);c=null!==l.data.boundZoom?l.data.boundZoom:b,m.call(l,c),i(d)}else l._currentZoom=c;f.scale=l._currentZoom,h[z]=f.toString(),o(p,h),l.data.points.length?E.call(l,l.data.points):_.call(l),g.call(l),y.call(l)}}function E(e){if(4!=e.length)throw"Croppie - Invalid number of points supplied: "+e;var t=this,n=e[2]-e[0],i=t.elements.viewport.getBoundingClientRect(),r=t.elements.boundary.getBoundingClientRect(),a={left:i.left-r.left,top:i.top-r.top},l=i.width/n,s=e[1],u=e[0],c=-1*e[1]+a.top,h=-1*e[0]+a.left,p={};p[S]=u+"px "+s+"px",p[z]=new T(h,c,l).toString(),o(t.elements.preview,p),m.call(t,l),t._currentZoom=l}function _(){var e=this,t=e.elements.preview.getBoundingClientRect(),n=e.elements.viewport.getBoundingClientRect(),i=e.elements.boundary.getBoundingClientRect(),r=n.left-i.left,a=n.top-i.top,l=r-(t.width-n.width)/2,s=a-(t.height-n.height)/2,u=new T(l,s,e._currentZoom);o(e.elements.preview,z,u.toString())}function B(e){var t=this,n=t.elements.canvas,i=t.elements.img,o=n.getContext("2d"),r=p.call(t),e=t.options.enableOrientation&&e;o.clearRect(0,0,n.width,n.height),n.width=i.width,n.height=i.height,r?u(i,function(t){c(n,i,l(t,10)),e&&c(n,i,e)}):e&&c(n,i,e)}function R(e){var t=this,n=e.points,i=l(n[0]),o=l(n[1]),r=l(n[2]),a=l(n[3]),s=r-i,u=a-o,c=e.circle,h=document.createElement("canvas"),p=h.getContext("2d"),m=s,d=u,f=0,v=0,g=m,w=d,y=e.outputWidth&&e.outputHeight,b=1;return y&&(g=e.outputWidth,w=e.outputHeight,b=g/m),h.width=g,h.height=w,e.backgroundColor&&(p.fillStyle=e.backgroundColor,p.fillRect(0,0,m,d)),0>i&&(f=Math.abs(i),i=0),0>o&&(v=Math.abs(o),o=0),r>t._originalImageWidth&&(s=t._originalImageWidth-i,m=s),a>t._originalImageHeight&&(u=t._originalImageHeight-o,d=u),1!==b&&(f*=b,v*=b,m*=b,d*=b),p.drawImage(this.elements.preview,i,o,s,u,f,v,m,d),c&&(p.fillStyle="#fff",p.globalCompositeOperation="destination-in",p.beginPath(),p.arc(m/2,d/2,m/2,0,2*Math.PI,!0),p.closePath(),p.fill()),h}function I(e){var t=e.points,n=document.createElement("div"),i=document.createElement("img"),a=t[2]-t[0],l=t[3]-t[1];return r(n,"croppie-result"),n.appendChild(i),o(i,{left:-1*t[0]+"px",top:-1*t[1]+"px"}),i.src=e.url,o(n,{width:a+"px",height:l+"px"}),n}function Z(e){return R.call(this,e).toDataURL(e.format,e.quality)}function L(e){var t=this;return new Promise(function(n){R.call(t,e).toBlob(function(e){n(e)},e.format,e.quality)})}function M(e,t){var n,i=this,o=[],r=null;if("string"==typeof e)n=e,e={};else if(Array.isArray(e))o=e.slice();else{if("undefined"==typeof e&&i.data.url)return C.call(i),b.call(i),null;n=e.url,o=e.points||[],r="undefined"==typeof e.zoom?null:e.zoom}return i.data.bound=!1,i.data.url=n||i.data.url,i.data.boundZoom=r,s(n,i.elements.img).then(function(n){if(o.length)i.options.relative&&(o=[o[0]*n.naturalWidth/100,o[1]*n.naturalHeight/100,o[2]*n.naturalWidth/100,o[3]*n.naturalHeight/100]),i.data.points=o.map(function(e){return parseFloat(e)});else{var r,a,l=n.naturalWidth,s=n.naturalHeight,u=i.elements.viewport.getBoundingClientRect(),c=u.width/u.height;l/s>c?(a=s,r=a*c):(r=l,a=r/c);var h=(l-r)/2,p=(s-a)/2,m=h+r,d=p+a;i.data.points=[h,p,m,d]}i.options.useCanvas&&(i.elements.img.exifdata=null,B.call(i,e.orientation||1)),C.call(i),b.call(i),t&&t()})}function F(e,t){return parseFloat(e).toFixed(t||0)}function W(){var e=this,t=e.elements.preview.getBoundingClientRect(),n=e.elements.viewport.getBoundingClientRect(),i=n.left-t.left,o=n.top-t.top,r=(n.width-e.elements.viewport.offsetWidth)/2,a=(n.height-e.elements.viewport.offsetHeight)/2,l=i+e.elements.viewport.offsetWidth+r,s=o+e.elements.viewport.offsetHeight+a,u=e._currentZoom;(u===1/0||isNaN(u))&&(u=1);var c=e.options.enforceBoundary?0:Number.NEGATIVE_INFINITY;return i=Math.max(c,i/u),o=Math.max(c,o/u),l=Math.max(c,l/u),s=Math.max(c,s/u),{points:[F(i),F(o),F(l),F(s)],zoom:u}}function X(e){var n,i=this,o=W.call(i),r=t(U,t({},e)),a="string"==typeof e?e:r.type||"base64",l=r.size,s=r.format,u=r.quality,c=r.backgroundColor,h="boolean"==typeof r.circle?r.circle:"circle"===i.options.viewport.type,p=i.elements.viewport.getBoundingClientRect(),m=p.width/p.height;return"viewport"===l?(o.outputWidth=p.width,o.outputHeight=p.height):"object"==typeof l&&(l.width&&l.height?(o.outputWidth=l.width,o.outputHeight=l.height):l.width?(o.outputWidth=l.width,o.outputHeight=l.width/m):l.height&&(o.outputWidth=l.height*m,o.outputHeight=l.height)),Q.indexOf(s)>-1&&(o.format="image/"+s,o.quality=u),o.circle=h,o.url=i.data.url,o.backgroundColor=c,n=new Promise(function(e){switch(a.toLowerCase()){case"rawcanvas":e(R.call(i,o));break;case"canvas":case"base64":e(Z.call(i,o));break;case"blob":L.call(i,o).then(e);break;default:e(I.call(i,o))}})}function k(){C.call(this)}function H(e){if(!this.options.useCanvas)throw"Croppie: Cannot rotate without enableOrientation";var t=this,n=t.elements.canvas,i=(t.elements.img,document.createElement("canvas")),o=1;i.width=n.width,i.height=n.height;var r=i.getContext("2d");r.drawImage(n,0,0),(90===e||-270===e)&&(o=6),(-90===e||270===e)&&(o=8),(180===e||-180===e)&&(o=3),c(n,i,o),f.call(t)}function Y(){var e=this;e.element.removeChild(e.elements.boundary),a(e.element,"croppie-container"),e.options.enableZoom&&e.element.removeChild(e.elements.zoomerWrap),delete e.elements}function j(e,n){if(this.element=e,this.options=t(t({},j.defaults),n),"img"===this.element.tagName.toLowerCase()){var i=this.element;r(i,"cr-original-image");var o=document.createElement("div");this.element.parentNode.appendChild(o),o.appendChild(i),this.element=o,this.options.url=this.options.url||i.src}if(h.call(this),this.options.url){var a={url:this.options.url,points:this.options.points};delete this.options.url,delete this.options.points,M.call(this,a)}}"function"!=typeof Promise&&!function(e){function t(e,t){return function(){e.apply(t,arguments)}}function n(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(e,t(o,this),t(r,this))}function i(e){var t=this;return null===this._state?void this._deferreds.push(e):void c(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var i;try{i=n(t._value)}catch(o){return void e.reject(o)}e.resolve(i)})}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void s(t(n,e),t(o,this),t(r,this))}this._state=!0,this._value=e,a.call(this)}catch(i){r.call(this,i)}}function r(e){this._state=!1,this._value=e,a.call(this)}function a(){for(var e=0,t=this._deferreds.length;t>e;e++)i.call(this,this._deferreds[e]);this._deferreds=null}function l(e,t,n,i){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=i}function s(e,t,n){var i=!1;try{e(function(e){i||(i=!0,t(e))},function(e){i||(i=!0,n(e))})}catch(o){if(i)return;i=!0,n(o)}}var u=setTimeout,c="function"==typeof setImmediate&&setImmediate||function(e){u(e,1)},h=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};n.prototype["catch"]=function(e){return this.then(null,e)},n.prototype.then=function(e,t){var o=this;return new n(function(n,r){i.call(o,new l(e,t,n,r))})},n.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&h(arguments[0])?arguments[0]:arguments);return new n(function(t,n){function i(r,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var l=a.then;if("function"==typeof l)return void l.call(a,function(e){i(r,e)},n)}e[r]=a,0===--o&&t(e)}catch(s){n(s)}}if(0===e.length)return t([]);for(var o=e.length,r=0;ri;i++)e[i].then(t,n)})},n._setImmediateFn=function(e){c=e},"undefined"!=typeof module&&module.exports?module.exports=n:e.Promise||(e.Promise=n)}(this),"function"!=typeof window.CustomEvent&&!function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,n){for(var i=atob(this.toDataURL(t,n).split(",")[1]),o=i.length,r=new Uint8Array(o),a=0;o>a;a++)r[a]=i.charCodeAt(a);e(new Blob([r],{type:t||"image/png"}))}});var S,z,P,N=["Webkit","Moz","ms"],O=document.createElement("div").style;z=e("transform"),S=e("transformOrigin"),P=e("userSelect");var A={translate3d:{suffix:", 0px"},translate:{suffix:""}},T=function(e,t,n){this.x=parseFloat(e),this.y=parseFloat(t),this.scale=parseFloat(n)};T.parse=function(e){return e.style?T.parse(e.style[z]):e.indexOf("matrix")>-1||e.indexOf("none")>-1?T.fromMatrix(e):T.fromString(e)},T.fromMatrix=function(e){var t=e.substring(7).split(",");return t.length&&"none"!==e||(t=[1,0,0,1,0,0]),new T(l(t[4]),l(t[5]),parseFloat(t[0]))},T.fromString=function(e){var t=e.split(") "),n=t[0].substring(j.globals.translate.length+1).split(","),i=t.length>1?t[1].substring(6):1,o=n.length>1?n[0]:0,r=n.length>1?n[1]:0;return new T(o,r,i)},T.prototype.toString=function(){var e=A[j.globals.translate].suffix||"";return j.globals.translate+"("+this.x+"px, "+this.y+"px"+e+") scale("+this.scale+")"};var D=function(e){if(!e||!e.style[S])return this.x=0,void(this.y=0);var t=e.style[S].split(" ");this.x=parseFloat(t[0]),this.y=parseFloat(t[1])};D.prototype.toString=function(){return this.x+"px "+this.y+"px"};var q=n(y,500),U={type:"canvas",format:"png",quality:1},Q=["jpeg","webp","png"];if(window.jQuery){var $=window.jQuery;$.fn.croppie=function(e){var t=typeof e;if("string"===t){var n=Array.prototype.slice.call(arguments,1),i=$(this).data("croppie");return"get"===e?i.get():"result"===e?i.result.apply(i,n):"bind"===e?i.bind.apply(i,n):this.each(function(){var t=$(this).data("croppie");if(t){var i=t[e];if(!$.isFunction(i))throw"Croppie "+e+" method not found";i.apply(t,n),"destroy"===e&&$(this).removeData("croppie")}})}return this.each(function(){var t=new j(this,e);t.$=$,$(this).data("croppie",t)})}}j.defaults={viewport:{width:100,height:100,type:"square"},boundary:{},orientationControls:{enabled:!0,leftClass:"",rightClass:""},customClass:"",showZoomer:!0,enableZoom:!0,mouseWheelZoom:!0,enableExif:!1,enforceBoundary:!0,enableOrientation:!1,update:function(){}},j.globals={translate:"translate3d"},t(j.prototype,{bind:function(e,t){return M.call(this,e,t)},get:function(){var e=W.call(this),t=e.points;return this.options.relative&&(t[0]/=this.elements.img.naturalWidth/100,t[1]/=this.elements.img.naturalHeight/100,t[2]/=this.elements.img.naturalWidth/100,t[3]/=this.elements.img.naturalHeight/100),e},result:function(e){return X.call(this,e)},refresh:function(){return k.call(this)},setZoom:function(e){m.call(this,e),i(this.elements.zoomer)},rotate:function(e){H.call(this,e)},destroy:function(){return Y.call(this)}}),exports.Croppie=window.Croppie=j,"object"==typeof module&&module.exports&&(module.exports=j)}); \ No newline at end of file