/*!
* Cropper v3.1.6
* https://github.com/fengyuanchen/cropper
*
* Copyright (c) 2014-2018 Chen Fengyuan
* Released under the MIT license
*
* Date: 2018-03-01T13:33:48.179Z
*/
(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?factory(require('jquery')):typeof define==='function'&&define.amd?define(['jquery'],factory):(factory(global.jQuery))}(this,(function($){'use strict';$=$&&$.hasOwnProperty('default')?$['default']:$;var WINDOW=typeof window!=='undefined'?window:{};var NAMESPACE='cropper';var ACTION_ALL='all';var ACTION_CROP='crop';var ACTION_MOVE='move';var ACTION_ZOOM='zoom';var ACTION_EAST='e';var ACTION_WEST='w';var ACTION_SOUTH='s';var ACTION_NORTH='n';var ACTION_NORTH_EAST='ne';var ACTION_NORTH_WEST='nw';var ACTION_SOUTH_EAST='se';var ACTION_SOUTH_WEST='sw';var CLASS_CROP=NAMESPACE+'-crop';var CLASS_DISABLED=NAMESPACE+'-disabled';var CLASS_HIDDEN=NAMESPACE+'-hidden';var CLASS_HIDE=NAMESPACE+'-hide';var CLASS_INVISIBLE=NAMESPACE+'-invisible';var CLASS_MODAL=NAMESPACE+'-modal';var CLASS_MOVE=NAMESPACE+'-move';var DATA_ACTION='action';var DATA_PREVIEW='preview';var DRAG_MODE_CROP='crop';var DRAG_MODE_MOVE='move';var DRAG_MODE_NONE='none';var EVENT_CROP='crop';var EVENT_CROP_END='cropend';var EVENT_CROP_MOVE='cropmove';var EVENT_CROP_START='cropstart';var EVENT_DBLCLICK='dblclick';var EVENT_ERROR='error';var EVENT_LOAD='load';var EVENT_POINTER_DOWN=WINDOW.PointerEvent?'pointerdown':'touchstart mousedown';var EVENT_POINTER_MOVE=WINDOW.PointerEvent?'pointermove':'touchmove mousemove';var EVENT_POINTER_UP=WINDOW.PointerEvent?'pointerup pointercancel':'touchend touchcancel mouseup';var EVENT_READY='ready';var EVENT_RESIZE='resize';var EVENT_WHEEL='wheel mousewheel DOMMouseScroll';var EVENT_ZOOM='zoom';var REGEXP_ACTIONS=/^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;var REGEXP_DATA_URL=/^data:/;var REGEXP_DATA_URL_JPEG=/^data:image\/jpeg;base64,/;var REGEXP_TAG_NAME=/^(img|canvas)$/i;var DEFAULTS={viewMode:0,dragMode:DRAG_MODE_CROP,aspectRatio:NaN,data:null,preview:'',responsive:true,restore:true,checkCrossOrigin:true,checkOrientation:true,modal:true,guides:true,center:true,highlight:true,background:true,autoCrop:true,autoCropArea:0.8,movable:true,rotatable:true,scalable:true,zoomable:true,zoomOnTouch:true,zoomOnWheel:true,wheelZoomRatio:0.1,cropBoxMovable:true,cropBoxResizable:true,toggleDragModeOnDblclick:true,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null};var TEMPLATE='
';var classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};var createClass=function(){function defineProperties(target,props){for(var i=0;i2?_len-2:0),_key=2;_key<_len;_key+=1){args[_key-2]=arguments[_key]}return function(){for(var _len2=arguments.length,args2=Array(_len2),_key2=0;_key2<_len2;_key2+=1){args2[_key2]=arguments[_key2]}return fn.apply(context,args.concat(args2))}}var objectKeys=Object.keys||function objectKeys(obj){var keys=[];$.each(obj,function(key){keys.push(key)});return keys};var REGEXP_DECIMALS=/\.\d*(?:0|9){12}\d*$/i;function normalizeDecimalNumber(value){var times=arguments.length>1&&arguments[1]!==undefined?arguments[1]:100000000000;return REGEXP_DECIMALS.test(value)?Math.round(value*times)/times:value}var location=WINDOW.location;var REGEXP_ORIGINS=/^(https?:)\/\/([^:/?#]+):?(\d*)/i;function isCrossOriginURL(url){var parts=url.match(REGEXP_ORIGINS);return parts&&(parts[1]!==location.protocol||parts[2]!==location.hostname||parts[3]!==location.port)}function addTimestamp(url){var timestamp='timestamp='+new Date().getTime();return url+(url.indexOf('?')===-1?'?':'&')+timestamp}function getTransformValues(_ref){var rotate=_ref.rotate,scaleX=_ref.scaleX,scaleY=_ref.scaleY,translateX=_ref.translateX,translateY=_ref.translateY;var values=[];if(isNumber(translateX)&&translateX!==0){values.push('translateX('+translateX+'px)')}if(isNumber(translateY)&&translateY!==0){values.push('translateY('+translateY+'px)')}if(isNumber(rotate)&&rotate!==0){values.push('rotate('+rotate+'deg)')}if(isNumber(scaleX)&&scaleX!==1){values.push('scaleX('+scaleX+')')}if(isNumber(scaleY)&&scaleY!==1){values.push('scaleY('+scaleY+')')}return values.length?values.join(' '):'none'}var navigator=WINDOW.navigator;var IS_SAFARI_OR_UIWEBVIEW=navigator&&/(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);function getImageNaturalSizes(image,callback){if(image.naturalWidth&&!IS_SAFARI_OR_UIWEBVIEW){callback(image.naturalWidth,image.naturalHeight);return}var newImage=document.createElement('img');newImage.onload=function(){callback(newImage.width,newImage.height)};newImage.src=image.src}function getMaxZoomRatio(pointers){var pointers2=$.extend({},pointers);var ratios=[];$.each(pointers,function(pointerId,pointer){delete pointers2[pointerId];$.each(pointers2,function(pointerId2,pointer2){var x1=Math.abs(pointer.startX-pointer2.startX);var y1=Math.abs(pointer.startY-pointer2.startY);var x2=Math.abs(pointer.endX-pointer2.endX);var y2=Math.abs(pointer.endY-pointer2.endY);var z1=Math.sqrt(x1*x1+y1*y1);var z2=Math.sqrt(x2*x2+y2*y2);var ratio=(z2-z1)/z1;ratios.push(ratio)})});ratios.sort(function(a,b){return Math.abs(a)1&&arguments[1]!==undefined?arguments[1]:'contain';var isValidNumber=function isValidNumber(value){return isFinite(value)&&value>0};if(isValidNumber(width)&&isValidNumber(height)){var adjustedWidth=height*aspectRatio;if(type==='contain'&&adjustedWidth>width||type==='cover'&&adjustedWidth90?{width:newHeight,height:newWidth}:{width:newWidth,height:newHeight}}function getSourceCanvas(image,_ref6,_ref7,_ref8){var _ref6$rotate=_ref6.rotate,rotate=_ref6$rotate===undefined?0:_ref6$rotate,_ref6$scaleX=_ref6.scaleX,scaleX=_ref6$scaleX===undefined?1:_ref6$scaleX,_ref6$scaleY=_ref6.scaleY,scaleY=_ref6$scaleY===undefined?1:_ref6$scaleY;var aspectRatio=_ref7.aspectRatio,naturalWidth=_ref7.naturalWidth,naturalHeight=_ref7.naturalHeight;var _ref8$fillColor=_ref8.fillColor,fillColor=_ref8$fillColor===undefined?'transparent':_ref8$fillColor,_ref8$imageSmoothingE=_ref8.imageSmoothingEnabled,imageSmoothingEnabled=_ref8$imageSmoothingE===undefined?true:_ref8$imageSmoothingE,_ref8$imageSmoothingQ=_ref8.imageSmoothingQuality,imageSmoothingQuality=_ref8$imageSmoothingQ===undefined?'low':_ref8$imageSmoothingQ,_ref8$maxWidth=_ref8.maxWidth,maxWidth=_ref8$maxWidth===undefined?Infinity:_ref8$maxWidth,_ref8$maxHeight=_ref8.maxHeight,maxHeight=_ref8$maxHeight===undefined?Infinity:_ref8$maxHeight,_ref8$minWidth=_ref8.minWidth,minWidth=_ref8$minWidth===undefined?0:_ref8$minWidth,_ref8$minHeight=_ref8.minHeight,minHeight=_ref8$minHeight===undefined?0:_ref8$minHeight;var canvas=document.createElement('canvas');var context=canvas.getContext('2d');var maxSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:maxWidth,height:maxHeight});var minSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:minWidth,height:minHeight},'cover');var width=Math.min(maxSizes.width,Math.max(minSizes.width,naturalWidth));var height=Math.min(maxSizes.height,Math.max(minSizes.height,naturalHeight));var params=[-width/2,-height/2,width,height];canvas.width=normalizeDecimalNumber(width);canvas.height=normalizeDecimalNumber(height);context.fillStyle=fillColor;context.fillRect(0,0,width,height);context.save();context.translate(width/2,height/2);context.rotate(rotate*Math.PI/180);context.scale(scaleX,scaleY);context.imageSmoothingEnabled=imageSmoothingEnabled;context.imageSmoothingQuality=imageSmoothingQuality;context.drawImage.apply(context,[image].concat(toConsumableArray($.map(params,function(param){return Math.floor(normalizeDecimalNumber(param))}))));context.restore();return canvas}var fromCharCode=String.fromCharCode;function getStringFromCharCode(dataView,start,length){var str='';var i=void 0;length+=start;for(i=start;i=0x00000008){ifdStart=tiffOffset+firstIFDOffset}}}}}if(ifdStart){var _length=dataView.getUint16(ifdStart,littleEndian);var _offset=void 0;var i=void 0;for(i=0;i<_length;i+=1){_offset=ifdStart+i*12+2;if(dataView.getUint16(_offset,littleEndian)===0x0112){_offset+=8;orientation=dataView.getUint16(_offset,littleEndian);dataView.setUint16(_offset,1,littleEndian);break}}}return orientation}function parseOrientation(orientation){var rotate=0;var scaleX=1;var scaleY=1;switch(orientation){case 2:scaleX=-1;break;case 3:rotate=-180;break;case 4:scaleY=-1;break;case 5:rotate=90;scaleY=-1;break;case 6:rotate=90;break;case 7:rotate=90;scaleX=-1;break;case 8:rotate=-90;break;default:}return{rotate:rotate,scaleX:scaleX,scaleY:scaleY}}var render={render:function render(){this.initContainer();this.initCanvas();this.initCropBox();this.renderCanvas();if(this.cropped){this.renderCropBox()}},initContainer:function initContainer(){var $element=this.$element,options=this.options,$container=this.$container,$cropper=this.$cropper;$cropper.addClass(CLASS_HIDDEN);$element.removeClass(CLASS_HIDDEN);$cropper.css(this.container={width:Math.max($container.width(),Number(options.minContainerWidth)||200),height:Math.max($container.height(),Number(options.minContainerHeight)||100)});$element.addClass(CLASS_HIDDEN);$cropper.removeClass(CLASS_HIDDEN)},initCanvas:function initCanvas(){var container=this.container,image=this.image;var viewMode=this.options.viewMode;var rotated=Math.abs(image.rotate)%180===90;var naturalWidth=rotated?image.naturalHeight:image.naturalWidth;var naturalHeight=rotated?image.naturalWidth:image.naturalHeight;var aspectRatio=naturalWidth/naturalHeight;var canvasWidth=container.width;var canvasHeight=container.height;if(container.height*aspectRatio>container.width){if(viewMode===3){canvasWidth=container.height*aspectRatio}else{canvasHeight=container.width/aspectRatio}}else if(viewMode===3){canvasHeight=container.width/aspectRatio}else{canvasWidth=container.height*aspectRatio}var canvas={aspectRatio:aspectRatio,naturalWidth:naturalWidth,naturalHeight:naturalHeight,width:canvasWidth,height:canvasHeight};canvas.left=(container.width-canvasWidth)/2;canvas.top=(container.height-canvasHeight)/2;canvas.oldLeft=canvas.left;canvas.oldTop=canvas.top;this.canvas=canvas;this.limited=viewMode===1||viewMode===2;this.limitCanvas(true,true);this.initialImage=$.extend({},image);this.initialCanvas=$.extend({},canvas)},limitCanvas:function limitCanvas(isSizeLimited,isPositionLimited){var options=this.options,container=this.container,canvas=this.canvas,cropBox=this.cropBox;var viewMode=options.viewMode;var aspectRatio=canvas.aspectRatio;var cropped=this.cropped&&cropBox;if(isSizeLimited){var minCanvasWidth=Number(options.minCanvasWidth)||0;var minCanvasHeight=Number(options.minCanvasHeight)||0;if(viewMode>0){if(viewMode>1){minCanvasWidth=Math.max(minCanvasWidth,container.width);minCanvasHeight=Math.max(minCanvasHeight,container.height);if(viewMode===3){if(minCanvasHeight*aspectRatio>minCanvasWidth){minCanvasWidth=minCanvasHeight*aspectRatio}else{minCanvasHeight=minCanvasWidth/aspectRatio}}}else if(minCanvasWidth){minCanvasWidth=Math.max(minCanvasWidth,cropped?cropBox.width:0)}else if(minCanvasHeight){minCanvasHeight=Math.max(minCanvasHeight,cropped?cropBox.height:0)}else if(cropped){minCanvasWidth=cropBox.width;minCanvasHeight=cropBox.height;if(minCanvasHeight*aspectRatio>minCanvasWidth){minCanvasWidth=minCanvasHeight*aspectRatio}else{minCanvasHeight=minCanvasWidth/aspectRatio}}}var _getAdjustedSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:minCanvasWidth,height:minCanvasHeight});minCanvasWidth=_getAdjustedSizes.width;minCanvasHeight=_getAdjustedSizes.height;canvas.minWidth=minCanvasWidth;canvas.minHeight=minCanvasHeight;canvas.maxWidth=Infinity;canvas.maxHeight=Infinity}if(isPositionLimited){if(viewMode>0){var newCanvasLeft=container.width-canvas.width;var newCanvasTop=container.height-canvas.height;canvas.minLeft=Math.min(0,newCanvasLeft);canvas.minTop=Math.min(0,newCanvasTop);canvas.maxLeft=Math.max(0,newCanvasLeft);canvas.maxTop=Math.max(0,newCanvasTop);if(cropped&&this.limited){canvas.minLeft=Math.min(cropBox.left,cropBox.left+cropBox.width-canvas.width);canvas.minTop=Math.min(cropBox.top,cropBox.top+cropBox.height-canvas.height);canvas.maxLeft=cropBox.left;canvas.maxTop=cropBox.top;if(viewMode===2){if(canvas.width>=container.width){canvas.minLeft=Math.min(0,newCanvasLeft);canvas.maxLeft=Math.max(0,newCanvasLeft)}if(canvas.height>=container.height){canvas.minTop=Math.min(0,newCanvasTop);canvas.maxTop=Math.max(0,newCanvasTop)}}}}else{canvas.minLeft= -canvas.width;canvas.minTop= -canvas.height;canvas.maxLeft=container.width;canvas.maxTop=container.height}}},renderCanvas:function renderCanvas(changed,transformed){var canvas=this.canvas,image=this.image;if(transformed){var _getRotatedSizes=getRotatedSizes({width:image.naturalWidth*Math.abs(image.scaleX||1),height:image.naturalHeight*Math.abs(image.scaleY||1),degree:image.rotate||0}),naturalWidth=_getRotatedSizes.width,naturalHeight=_getRotatedSizes.height;var width=canvas.width*(naturalWidth/canvas.naturalWidth);var height=canvas.height*(naturalHeight/canvas.naturalHeight);canvas.left-=(width-canvas.width)/2;canvas.top-=(height-canvas.height)/2;canvas.width=width;canvas.height=height;canvas.aspectRatio=naturalWidth/naturalHeight;canvas.naturalWidth=naturalWidth;canvas.naturalHeight=naturalHeight;this.limitCanvas(true,false)}if(canvas.width>canvas.maxWidth||canvas.widthcanvas.maxHeight||canvas.heightcanvas.width){cropBox.height=cropBox.width/aspectRatio}else{cropBox.width=cropBox.height*aspectRatio}}this.cropBox=cropBox;this.limitCropBox(true,true);cropBox.width=Math.min(Math.max(cropBox.width,cropBox.minWidth),cropBox.maxWidth);cropBox.height=Math.min(Math.max(cropBox.height,cropBox.minHeight),cropBox.maxHeight);cropBox.width=Math.max(cropBox.minWidth,cropBox.width*autoCropArea);cropBox.height=Math.max(cropBox.minHeight,cropBox.height*autoCropArea);cropBox.left=canvas.left+(canvas.width-cropBox.width)/2;cropBox.top=canvas.top+(canvas.height-cropBox.height)/2;cropBox.oldLeft=cropBox.left;cropBox.oldTop=cropBox.top;this.initialCropBox=$.extend({},cropBox)},limitCropBox:function limitCropBox(isSizeLimited,isPositionLimited){var options=this.options,container=this.container,canvas=this.canvas,cropBox=this.cropBox,limited=this.limited;var aspectRatio=options.aspectRatio;if(isSizeLimited){var minCropBoxWidth=Number(options.minCropBoxWidth)||0;var minCropBoxHeight=Number(options.minCropBoxHeight)||0;var maxCropBoxWidth=Math.min(container.width,limited?canvas.width:container.width);var maxCropBoxHeight=Math.min(container.height,limited?canvas.height:container.height);minCropBoxWidth=Math.min(minCropBoxWidth,container.width);minCropBoxHeight=Math.min(minCropBoxHeight,container.height);if(aspectRatio){if(minCropBoxWidth&&minCropBoxHeight){if(minCropBoxHeight*aspectRatio>minCropBoxWidth){minCropBoxHeight=minCropBoxWidth/aspectRatio}else{minCropBoxWidth=minCropBoxHeight*aspectRatio}}else if(minCropBoxWidth){minCropBoxHeight=minCropBoxWidth/aspectRatio}else if(minCropBoxHeight){minCropBoxWidth=minCropBoxHeight*aspectRatio}if(maxCropBoxHeight*aspectRatio>maxCropBoxWidth){maxCropBoxHeight=maxCropBoxWidth/aspectRatio}else{maxCropBoxWidth=maxCropBoxHeight*aspectRatio}}cropBox.minWidth=Math.min(minCropBoxWidth,maxCropBoxWidth);cropBox.minHeight=Math.min(minCropBoxHeight,maxCropBoxHeight);cropBox.maxWidth=maxCropBoxWidth;cropBox.maxHeight=maxCropBoxHeight}if(isPositionLimited){if(limited){cropBox.minLeft=Math.max(0,canvas.left);cropBox.minTop=Math.max(0,canvas.top);cropBox.maxLeft=Math.min(container.width,canvas.left+canvas.width)-cropBox.width;cropBox.maxTop=Math.min(container.height,canvas.top+canvas.height)-cropBox.height}else{cropBox.minLeft=0;cropBox.minTop=0;cropBox.maxLeft=container.width-cropBox.width;cropBox.maxTop=container.height-cropBox.height}}},renderCropBox:function renderCropBox(){var options=this.options,container=this.container,cropBox=this.cropBox;if(cropBox.width>cropBox.maxWidth||cropBox.widthcropBox.maxHeight||cropBox.height=container.width&&cropBox.height>=container.height?ACTION_MOVE:ACTION_ALL)}this.$cropBox.css({width:cropBox.width,height:cropBox.height,transform:getTransformValues({translateX:cropBox.left,translateY:cropBox.top})});if(this.cropped&&this.limited){this.limitCanvas(true,true)}if(!this.disabled){this.output()}},output:function output(){this.preview();if(this.completed){this.trigger(EVENT_CROP,this.getData())}}};var preview={initPreview:function initPreview(){var crossOrigin=this.crossOrigin;var url=crossOrigin?this.crossOriginUrl:this.url;var image=document.createElement('img');if(crossOrigin){image.crossOrigin=crossOrigin}image.src=url;var $clone2=$(image);this.$preview=$(this.options.preview);this.$clone2=$clone2;this.$viewBox.html($clone2);this.$preview.each(function(i,element){var $element=$(element);var img=document.createElement('img');$element.data(DATA_PREVIEW,{width:$element.width(),height:$element.height(),html:$element.html()});if(crossOrigin){img.crossOrigin=crossOrigin}img.src=url;img.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"';$element.html(img)})},resetPreview:function resetPreview(){this.$preview.each(function(i,element){var $element=$(element);var data=$element.data(DATA_PREVIEW);$element.css({width:data.width,height:data.height}).html(data.html).removeData(DATA_PREVIEW)})},preview:function preview(){var image=this.image,canvas=this.canvas,cropBox=this.cropBox;var cropBoxWidth=cropBox.width,cropBoxHeight=cropBox.height;var width=image.width,height=image.height;var left=cropBox.left-canvas.left-image.left;var top=cropBox.top-canvas.top-image.top;if(!this.cropped||this.disabled){return}this.$clone2.css({width:width,height:height,transform:getTransformValues($.extend({translateX: -left,translateY: -top},image))});this.$preview.each(function(i,element){var $element=$(element);var data=$element.data(DATA_PREVIEW);var originalWidth=data.width;var originalHeight=data.height;var newWidth=originalWidth;var newHeight=originalHeight;var ratio=1;if(cropBoxWidth){ratio=originalWidth/cropBoxWidth;newHeight=cropBoxHeight*ratio}if(cropBoxHeight&&newHeight>originalHeight){ratio=originalHeight/cropBoxHeight;newWidth=cropBoxWidth*ratio;newHeight=originalHeight}$element.css({width:newWidth,height:newHeight}).find('img').css({width:width*ratio,height:height*ratio,transform:getTransformValues($.extend({translateX: -left*ratio,translateY: -top*ratio},image))})})}};var events={bind:function bind(){var $element=this.$element,options=this.options,$cropper=this.$cropper;if($.isFunction(options.cropstart)){$element.on(EVENT_CROP_START,options.cropstart)}if($.isFunction(options.cropmove)){$element.on(EVENT_CROP_MOVE,options.cropmove)}if($.isFunction(options.cropend)){$element.on(EVENT_CROP_END,options.cropend)}if($.isFunction(options.crop)){$element.on(EVENT_CROP,options.crop)}if($.isFunction(options.zoom)){$element.on(EVENT_ZOOM,options.zoom)}$cropper.on(EVENT_POINTER_DOWN,proxy(this.cropStart,this));if(options.zoomable&&options.zoomOnWheel){$cropper.on(EVENT_WHEEL,proxy(this.wheel,this))}if(options.toggleDragModeOnDblclick){$cropper.on(EVENT_DBLCLICK,proxy(this.dblclick,this))}$(this.element.ownerDocument).on(EVENT_POINTER_MOVE,this.onCropMove=proxy(this.cropMove,this)).on(EVENT_POINTER_UP,this.onCropEnd=proxy(this.cropEnd,this));if(options.responsive){$(window).on(EVENT_RESIZE,this.onResize=proxy(this.resize,this))}},unbind:function unbind(){var $element=this.$element,options=this.options,$cropper=this.$cropper;if($.isFunction(options.cropstart)){$element.off(EVENT_CROP_START,options.cropstart)}if($.isFunction(options.cropmove)){$element.off(EVENT_CROP_MOVE,options.cropmove)}if($.isFunction(options.cropend)){$element.off(EVENT_CROP_END,options.cropend)}if($.isFunction(options.crop)){$element.off(EVENT_CROP,options.crop)}if($.isFunction(options.zoom)){$element.off(EVENT_ZOOM,options.zoom)}$cropper.off(EVENT_POINTER_DOWN,this.cropStart);if(options.zoomable&&options.zoomOnWheel){$cropper.off(EVENT_WHEEL,this.wheel)}if(options.toggleDragModeOnDblclick){$cropper.off(EVENT_DBLCLICK,this.dblclick)}$(this.element.ownerDocument).off(EVENT_POINTER_MOVE,this.onCropMove).off(EVENT_POINTER_UP,this.onCropEnd);if(options.responsive){$(window).off(EVENT_RESIZE,this.onResize)}}};var handlers={resize:function resize(){var options=this.options,$container=this.$container,container=this.container;var minContainerWidth=Number(options.minContainerWidth)||200;var minContainerHeight=Number(options.minContainerHeight)||100;if(this.disabled||container.width<=minContainerWidth||container.height<=minContainerHeight){return}var ratio=$container.width()/container.width;if(ratio!==1||$container.height()!==container.height){var canvasData=void 0;var cropBoxData=void 0;if(options.restore){canvasData=this.getCanvasData();cropBoxData=this.getCropBoxData()}this.render();if(options.restore){this.setCanvasData($.each(canvasData,function(i,n){canvasData[i]=n*ratio}));this.setCropBoxData($.each(cropBoxData,function(i,n){cropBoxData[i]=n*ratio}))}}},dblclick:function dblclick(){if(this.disabled||this.options.dragMode===DRAG_MODE_NONE){return}this.setDragMode(this.$dragBox.hasClass(CLASS_CROP)?DRAG_MODE_MOVE:DRAG_MODE_CROP)},wheel:function wheel(event){var _this=this;var e=event.originalEvent||event;var ratio=Number(this.options.wheelZoomRatio)||0.1;if(this.disabled){return}event.preventDefault();if(this.wheeling){return}this.wheeling=true;setTimeout(function(){_this.wheeling=false},50);var delta=1;if(e.deltaY){delta=e.deltaY>0?1:-1}else if(e.wheelDelta){delta= -e.wheelDelta/120}else if(e.detail){delta=e.detail>0?1:-1}this.zoom(-delta*ratio,event)},cropStart:function cropStart(e){if(this.disabled){return}var options=this.options,pointers=this.pointers;var originalEvent=e.originalEvent;var action=void 0;if(originalEvent&&originalEvent.changedTouches){$.each(originalEvent.changedTouches,function(i,touch){pointers[touch.identifier]=getPointer(touch)})}else{pointers[originalEvent&&originalEvent.pointerId||0]=getPointer(originalEvent||e)}if(objectKeys(pointers).length>1&&options.zoomable&&options.zoomOnTouch){action=ACTION_ZOOM}else{action=$(e.target).data(DATA_ACTION)}if(!REGEXP_ACTIONS.test(action)){return}if(this.trigger(EVENT_CROP_START,{originalEvent:originalEvent,action:action}).isDefaultPrevented()){return}e.preventDefault();this.action=action;this.cropping=false;if(action===ACTION_CROP){this.cropping=true;this.$dragBox.addClass(CLASS_MODAL)}},cropMove:function cropMove(e){var action=this.action;if(this.disabled||!action){return}var pointers=this.pointers;var originalEvent=e.originalEvent;e.preventDefault();if(this.trigger(EVENT_CROP_MOVE,{originalEvent:originalEvent,action:action}).isDefaultPrevented()){return}if(originalEvent&&originalEvent.changedTouches){$.each(originalEvent.changedTouches,function(i,touch){$.extend(pointers[touch.identifier],getPointer(touch,true))})}else{$.extend(pointers[originalEvent&&originalEvent.pointerId||0],getPointer(originalEvent||e,true))}this.change(e)},cropEnd:function cropEnd(e){if(this.disabled){return}var action=this.action;var pointers=this.pointers;var originalEvent=e.originalEvent;if(originalEvent&&originalEvent.changedTouches){$.each(originalEvent.changedTouches,function(i,touch){delete pointers[touch.identifier]})}else{delete pointers[originalEvent&&originalEvent.pointerId||0]}if(!action){return}e.preventDefault();if(!objectKeys(pointers).length){this.action=''}if(this.cropping){this.cropping=false;this.$dragBox.toggleClass(CLASS_MODAL,this.cropped&&this.options.modal)}this.trigger(EVENT_CROP_END,{originalEvent:originalEvent,action:action})}};var change={change:function change(e){var options=this.options,pointers=this.pointers,container=this.container,canvas=this.canvas,cropBox=this.cropBox;var action=this.action;var aspectRatio=options.aspectRatio;var left=cropBox.left,top=cropBox.top,width=cropBox.width,height=cropBox.height;var right=left+width;var bottom=top+height;var minLeft=0;var minTop=0;var maxWidth=container.width;var maxHeight=container.height;var renderable=true;var offset=void 0;if(!aspectRatio&&e.shiftKey){aspectRatio=width&&height?width/height:1}if(this.limited){minLeft=cropBox.minLeft;minTop=cropBox.minTop;maxWidth=minLeft+Math.min(container.width,canvas.width,canvas.left+canvas.width);maxHeight=minTop+Math.min(container.height,canvas.height,canvas.top+canvas.height)}var pointer=pointers[objectKeys(pointers)[0]];var range={x:pointer.endX-pointer.startX,y:pointer.endY-pointer.startY};var check=function check(side){switch(side){case ACTION_EAST:if(right+range.x>maxWidth){range.x=maxWidth-right}break;case ACTION_WEST:if(left+range.xmaxHeight){range.y=maxHeight-bottom}break;default:}};switch(action){case ACTION_ALL:left+=range.x;top+=range.y;break;case ACTION_EAST:if(range.x>=0&&(right>=maxWidth||aspectRatio&&(top<=minTop||bottom>=maxHeight))){renderable=false;break}check(ACTION_EAST);width+=range.x;if(aspectRatio){height=width/aspectRatio;top-=range.x/aspectRatio/2}if(width<0){action=ACTION_WEST;width=0}break;case ACTION_NORTH:if(range.y<=0&&(top<=minTop||aspectRatio&&(left<=minLeft||right>=maxWidth))){renderable=false;break}check(ACTION_NORTH);height-=range.y;top+=range.y;if(aspectRatio){width=height*aspectRatio;left+=range.y*aspectRatio/2}if(height<0){action=ACTION_SOUTH;height=0}break;case ACTION_WEST:if(range.x<=0&&(left<=minLeft||aspectRatio&&(top<=minTop||bottom>=maxHeight))){renderable=false;break}check(ACTION_WEST);width-=range.x;left+=range.x;if(aspectRatio){height=width/aspectRatio;top+=range.x/aspectRatio/2}if(width<0){action=ACTION_EAST;width=0}break;case ACTION_SOUTH:if(range.y>=0&&(bottom>=maxHeight||aspectRatio&&(left<=minLeft||right>=maxWidth))){renderable=false;break}check(ACTION_SOUTH);height+=range.y;if(aspectRatio){width=height*aspectRatio;left-=range.y*aspectRatio/2}if(height<0){action=ACTION_NORTH;height=0}break;case ACTION_NORTH_EAST:if(aspectRatio){if(range.y<=0&&(top<=minTop||right>=maxWidth)){renderable=false;break}check(ACTION_NORTH);height-=range.y;top+=range.y;width=height*aspectRatio}else{check(ACTION_NORTH);check(ACTION_EAST);if(range.x>=0){if(rightminTop){height-=range.y;top+=range.y}}else{height-=range.y;top+=range.y}}if(width<0&&height<0){action=ACTION_SOUTH_WEST;height=0;width=0}else if(width<0){action=ACTION_NORTH_WEST;width=0}else if(height<0){action=ACTION_SOUTH_EAST;height=0}break;case ACTION_NORTH_WEST:if(aspectRatio){if(range.y<=0&&(top<=minTop||left<=minLeft)){renderable=false;break}check(ACTION_NORTH);height-=range.y;top+=range.y;width=height*aspectRatio;left+=range.y*aspectRatio}else{check(ACTION_NORTH);check(ACTION_WEST);if(range.x<=0){if(left>minLeft){width-=range.x;left+=range.x}else if(range.y<=0&&top<=minTop){renderable=false}}else{width-=range.x;left+=range.x}if(range.y<=0){if(top>minTop){height-=range.y;top+=range.y}}else{height-=range.y;top+=range.y}}if(width<0&&height<0){action=ACTION_SOUTH_EAST;height=0;width=0}else if(width<0){action=ACTION_NORTH_EAST;width=0}else if(height<0){action=ACTION_SOUTH_WEST;height=0}break;case ACTION_SOUTH_WEST:if(aspectRatio){if(range.x<=0&&(left<=minLeft||bottom>=maxHeight)){renderable=false;break}check(ACTION_WEST);width-=range.x;left+=range.x;height=width/aspectRatio}else{check(ACTION_SOUTH);check(ACTION_WEST);if(range.x<=0){if(left>minLeft){width-=range.x;left+=range.x}else if(range.y>=0&&bottom>=maxHeight){renderable=false}}else{width-=range.x;left+=range.x}if(range.y>=0){if(bottom=0&&(right>=maxWidth||bottom>=maxHeight)){renderable=false;break}check(ACTION_EAST);width+=range.x;height=width/aspectRatio}else{check(ACTION_SOUTH);check(ACTION_EAST);if(range.x>=0){if(right=0&&bottom>=maxHeight){renderable=false}}else{width+=range.x}if(range.y>=0){if(bottom0){action=range.y>0?ACTION_SOUTH_EAST:ACTION_NORTH_EAST}else if(range.x<0){left-=width;action=range.y>0?ACTION_SOUTH_WEST:ACTION_NORTH_WEST}if(range.y<0){top-=height}if(!this.cropped){this.$cropBox.removeClass(CLASS_HIDDEN);this.cropped=true;if(this.limited){this.limitCropBox(true,true)}}break;default:}if(renderable){cropBox.width=width;cropBox.height=height;cropBox.left=left;cropBox.top=top;this.action=action;this.renderCropBox()}$.each(pointers,function(i,p){p.startX=p.endX;p.startY=p.endY})}};var methods={crop:function crop(){if(!this.ready||this.disabled){return}if(!this.cropped){this.cropped=true;this.limitCropBox(true,true);if(this.options.modal){this.$dragBox.addClass(CLASS_MODAL)}this.$cropBox.removeClass(CLASS_HIDDEN)}this.setCropBoxData(this.initialCropBox)},reset:function reset(){if(!this.ready||this.disabled){return}this.image=$.extend({},this.initialImage);this.canvas=$.extend({},this.initialCanvas);this.cropBox=$.extend({},this.initialCropBox);this.renderCanvas();if(this.cropped){this.renderCropBox()}},clear:function clear(){if(!this.cropped||this.disabled){return}$.extend(this.cropBox,{left:0,top:0,width:0,height:0});this.cropped=false;this.renderCropBox();this.limitCanvas(true,true);this.renderCanvas();this.$dragBox.removeClass(CLASS_MODAL);this.$cropBox.addClass(CLASS_HIDDEN)},replace:function replace(url,onlyColorChanged){if(!this.disabled&&url){if(this.isImg){this.$element.attr('src',url)}if(onlyColorChanged){this.url=url;this.$clone.attr('src',url);if(this.ready){this.$preview.find('img').add(this.$clone2).attr('src',url)}}else{if(this.isImg){this.replaced=true}this.options.data=null;this.load(url)}}},enable:function enable(){if(this.ready){this.disabled=false;this.$cropper.removeClass(CLASS_DISABLED)}},disable:function disable(){if(this.ready){this.disabled=true;this.$cropper.addClass(CLASS_DISABLED)}},destroy:function destroy(){var $element=this.$element;if(this.loaded){if(this.isImg&&this.replaced){$element.attr('src',this.originalUrl)}this.unbuild();$element.removeClass(CLASS_HIDDEN)}else if(this.isImg){$element.off(EVENT_LOAD,this.start)}else if(this.$clone){this.$clone.remove()}$element.removeData(NAMESPACE)},move:function move(offsetX,offsetY){var _canvas=this.canvas,left=_canvas.left,top=_canvas.top;this.moveTo(isUndefined(offsetX)?offsetX:left+Number(offsetX),isUndefined(offsetY)?offsetY:top+Number(offsetY))},moveTo:function moveTo(x,y){var canvas=this.canvas;var changed=false;if(isUndefined(y)){y=x}x=Number(x);y=Number(y);if(this.ready&&!this.disabled&&this.options.movable){if(isNumber(x)){canvas.left=x;changed=true}if(isNumber(y)){canvas.top=y;changed=true}if(changed){this.renderCanvas(true)}}},zoom:function zoom(ratio,_event){var canvas=this.canvas;ratio=Number(ratio);if(ratio<0){ratio=1/(1-ratio)}else{ratio=1+ratio}this.zoomTo(canvas.width*ratio/canvas.naturalWidth,_event)},zoomTo:function zoomTo(ratio,_event){var options=this.options,pointers=this.pointers,canvas=this.canvas;var width=canvas.width,height=canvas.height,naturalWidth=canvas.naturalWidth,naturalHeight=canvas.naturalHeight;ratio=Number(ratio);if(ratio>=0&&this.ready&&!this.disabled&&options.zoomable){var newWidth=naturalWidth*ratio;var newHeight=naturalHeight*ratio;var originalEvent=void 0;if(_event){originalEvent=_event.originalEvent}if(this.trigger(EVENT_ZOOM,{originalEvent:originalEvent,oldRatio:width/naturalWidth,ratio:newWidth/naturalWidth}).isDefaultPrevented()){return}if(originalEvent){var offset=this.$cropper.offset();var center=pointers&&objectKeys(pointers).length?getPointersCenter(pointers):{pageX:_event.pageX||originalEvent.pageX||0,pageY:_event.pageY||originalEvent.pageY||0};canvas.left-=(newWidth-width)*((center.pageX-offset.left-canvas.left)/width);canvas.top-=(newHeight-height)*((center.pageY-offset.top-canvas.top)/height)}else{canvas.left-=(newWidth-width)/2;canvas.top-=(newHeight-height)/2}canvas.width=newWidth;canvas.height=newHeight;this.renderCanvas(true)}},rotate:function rotate(degree){this.rotateTo((this.image.rotate||0)+Number(degree))},rotateTo:function rotateTo(degree){degree=Number(degree);if(isNumber(degree)&&this.ready&&!this.disabled&&this.options.rotatable){this.image.rotate=degree%360;this.renderCanvas(true,true)}},scaleX:function scaleX(_scaleX){var scaleY=this.image.scaleY;this.scale(_scaleX,isNumber(scaleY)?scaleY:1)},scaleY:function scaleY(_scaleY){var scaleX=this.image.scaleX;this.scale(isNumber(scaleX)?scaleX:1,_scaleY)},scale:function scale(scaleX){var scaleY=arguments.length>1&&arguments[1]!==undefined?arguments[1]:scaleX;var image=this.image;var transformed=false;scaleX=Number(scaleX);scaleY=Number(scaleY);if(this.ready&&!this.disabled&&this.options.scalable){if(isNumber(scaleX)){image.scaleX=scaleX;transformed=true}if(isNumber(scaleY)){image.scaleY=scaleY;transformed=true}if(transformed){this.renderCanvas(true,true)}}},getData:function getData(){var rounded=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var options=this.options,image=this.image,canvas=this.canvas,cropBox=this.cropBox;var data=void 0;if(this.ready&&this.cropped){data={x:cropBox.left-canvas.left,y:cropBox.top-canvas.top,width:cropBox.width,height:cropBox.height};var ratio=image.width/image.naturalWidth;$.each(data,function(i,n){n/=ratio;data[i]=rounded?Math.round(n):n})}else{data={x:0,y:0,width:0,height:0}}if(options.rotatable){data.rotate=image.rotate||0}if(options.scalable){data.scaleX=image.scaleX||1;data.scaleY=image.scaleY||1}return data},setData:function setData(data){var options=this.options,image=this.image,canvas=this.canvas;var cropBoxData={};if($.isFunction(data)){data=data.call(this.element)}if(this.ready&&!this.disabled&&$.isPlainObject(data)){var transformed=false;if(options.rotatable){if(isNumber(data.rotate)&&data.rotate!==image.rotate){image.rotate=data.rotate;transformed=true}}if(options.scalable){if(isNumber(data.scaleX)&&data.scaleX!==image.scaleX){image.scaleX=data.scaleX;transformed=true}if(isNumber(data.scaleY)&&data.scaleY!==image.scaleY){image.scaleY=data.scaleY;transformed=true}}if(transformed){this.renderCanvas(true,true)}var ratio=image.width/image.naturalWidth;if(isNumber(data.x)){cropBoxData.left=data.x*ratio+canvas.left}if(isNumber(data.y)){cropBoxData.top=data.y*ratio+canvas.top}if(isNumber(data.width)){cropBoxData.width=data.width*ratio}if(isNumber(data.height)){cropBoxData.height=data.height*ratio}this.setCropBoxData(cropBoxData)}},getContainerData:function getContainerData(){return this.ready?$.extend({},this.container):{}},getImageData:function getImageData(){return this.loaded?$.extend({},this.image):{}},getCanvasData:function getCanvasData(){var canvas=this.canvas;var data={};if(this.ready){$.each(['left','top','width','height','naturalWidth','naturalHeight'],function(i,n){data[n]=canvas[n]})}return data},setCanvasData:function setCanvasData(data){var canvas=this.canvas;var aspectRatio=canvas.aspectRatio;if($.isFunction(data)){data=data.call(this.$element)}if(this.ready&&!this.disabled&&$.isPlainObject(data)){if(isNumber(data.left)){canvas.left=data.left}if(isNumber(data.top)){canvas.top=data.top}if(isNumber(data.width)){canvas.width=data.width;canvas.height=data.width/aspectRatio}else if(isNumber(data.height)){canvas.height=data.height;canvas.width=data.height*aspectRatio}this.renderCanvas(true)}},getCropBoxData:function getCropBoxData(){var cropBox=this.cropBox;return this.ready&&this.cropped?{left:cropBox.left,top:cropBox.top,width:cropBox.width,height:cropBox.height}:{}},setCropBoxData:function setCropBoxData(data){var cropBox=this.cropBox;var aspectRatio=this.options.aspectRatio;var widthChanged=void 0;var heightChanged=void 0;if($.isFunction(data)){data=data.call(this.$element)}if(this.ready&&this.cropped&&!this.disabled&&$.isPlainObject(data)){if(isNumber(data.left)){cropBox.left=data.left}if(isNumber(data.top)){cropBox.top=data.top}if(isNumber(data.width)&&data.width!==cropBox.width){widthChanged=true;cropBox.width=data.width}if(isNumber(data.height)&&data.height!==cropBox.height){heightChanged=true;cropBox.height=data.height}if(aspectRatio){if(widthChanged){cropBox.height=cropBox.width/aspectRatio}else if(heightChanged){cropBox.width=cropBox.height*aspectRatio}}this.renderCropBox()}},getCroppedCanvas:function getCroppedCanvas(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement){return null}var canvasData=this.canvas;var source=getSourceCanvas(this.$clone[0],this.image,canvasData,options);if(!this.cropped){return source}var _getData=this.getData(),initialX=_getData.x,initialY=_getData.y,initialWidth=_getData.width,initialHeight=_getData.height;var ratio=source.width/Math.floor(canvasData.naturalWidth);if(ratio!==1){initialX*=ratio;initialY*=ratio;initialWidth*=ratio;initialHeight*=ratio}var aspectRatio=initialWidth/initialHeight;var maxSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:options.maxWidth||Infinity,height:options.maxHeight||Infinity});var minSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:options.minWidth||0,height:options.minHeight||0},'cover');var _getAdjustedSizes=getAdjustedSizes({aspectRatio:aspectRatio,width:options.width||(ratio!==1?source.width:initialWidth),height:options.height||(ratio!==1?source.height:initialHeight)}),width=_getAdjustedSizes.width,height=_getAdjustedSizes.height;width=Math.min(maxSizes.width,Math.max(minSizes.width,width));height=Math.min(maxSizes.height,Math.max(minSizes.height,height));var canvas=document.createElement('canvas');var context=canvas.getContext('2d');canvas.width=normalizeDecimalNumber(width);canvas.height=normalizeDecimalNumber(height);context.fillStyle=options.fillColor||'transparent';context.fillRect(0,0,width,height);var _options$imageSmoothi=options.imageSmoothingEnabled,imageSmoothingEnabled=_options$imageSmoothi===undefined?true:_options$imageSmoothi,imageSmoothingQuality=options.imageSmoothingQuality;context.imageSmoothingEnabled=imageSmoothingEnabled;if(imageSmoothingQuality){context.imageSmoothingQuality=imageSmoothingQuality}var sourceWidth=source.width;var sourceHeight=source.height;var srcX=initialX;var srcY=initialY;var srcWidth=void 0;var srcHeight=void 0;var dstX=void 0;var dstY=void 0;var dstWidth=void 0;var dstHeight=void 0;if(srcX<= -initialWidth||srcX>sourceWidth){srcX=0;srcWidth=0;dstX=0;dstWidth=0}else if(srcX<=0){dstX= -srcX;srcX=0;srcWidth=Math.min(sourceWidth,initialWidth+srcX);dstWidth=srcWidth}else if(srcX<=sourceWidth){dstX=0;srcWidth=Math.min(initialWidth,sourceWidth-srcX);dstWidth=srcWidth}if(srcWidth<=0||srcY<= -initialHeight||srcY>sourceHeight){srcY=0;srcHeight=0;dstY=0;dstHeight=0}else if(srcY<=0){dstY= -srcY;srcY=0;srcHeight=Math.min(sourceHeight,initialHeight+srcY);dstHeight=srcHeight}else if(srcY<=sourceHeight){dstY=0;srcHeight=Math.min(initialHeight,sourceHeight-srcY);dstHeight=srcHeight}var params=[srcX,srcY,srcWidth,srcHeight];if(dstWidth>0&&dstHeight>0){var scale=width/initialWidth;params.push(dstX*scale,dstY*scale,dstWidth*scale,dstHeight*scale)}context.drawImage.apply(context,[source].concat(toConsumableArray($.map(params,function(param){return Math.floor(normalizeDecimalNumber(param))}))));return canvas},setAspectRatio:function setAspectRatio(aspectRatio){var options=this.options;if(!this.disabled&&!isUndefined(aspectRatio)){options.aspectRatio=Math.max(0,aspectRatio)||NaN;if(this.ready){this.initCropBox();if(this.cropped){this.renderCropBox()}}}},setDragMode:function setDragMode(mode){var options=this.options;var croppable=void 0;var movable=void 0;if(this.loaded&&!this.disabled){croppable=mode===DRAG_MODE_CROP;movable=options.movable&&mode===DRAG_MODE_MOVE;mode=croppable||movable?mode:DRAG_MODE_NONE;this.$dragBox.data(DATA_ACTION,mode).toggleClass(CLASS_CROP,croppable).toggleClass(CLASS_MOVE,movable);if(!options.cropBoxMovable){this.$face.data(DATA_ACTION,mode).toggleClass(CLASS_CROP,croppable).toggleClass(CLASS_MOVE,movable)}}}};var Cropper=function(){function Cropper(element){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};classCallCheck(this,Cropper);if(!element||!REGEXP_TAG_NAME.test(element.tagName)){throw new Error('The first argument is required and must be an
or