!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?t(require("jquery")):t(jQuery)}(function(l){"use strict";var i,e=l(window),h=l(document),a=window.location,D=!0,W=!1,r=null,n="undefined",o="directive",t=".cropper",d=/^(e|n|w|s|ne|nw|sw|se|all|crop|move|zoom)$/,g=/^(x|y|width|height)$/,s=/^(naturalWidth|naturalHeight|width|height|aspectRatio|ratio|rotate)$/,p="cropper-modal",H="cropper-hidden",c="cropper-invisible",f="cropper-crop",m="cropper-disabled",u="mousedown touchstart",w="mousemove touchmove",v="mouseup mouseleave touchend touchleave touchcancel",x="wheel mousewheel DOMMouseScroll",b="resize"+t,y="dblclick",$="build"+t,C="built"+t,k="dragstart"+t,R="dragmove"+t,z="dragend"+t,L=function(t){return"number"==typeof t},Y=function(t,i){var e=[];return"number"==typeof i&&e.push(i),e.slice.apply(t,e)},X=function(t,i){var e=Y(arguments,2);return function(){return t.apply(i,e.concat(Y(arguments)))}},M=function(t,i){this.element=t,this.$element=l(t),this.defaults=l.extend({},M.DEFAULTS,l.isPlainObject(i)?i:{}),this.$original=r,this.ready=W,this.built=W,this.cropped=W,this.rotated=W,this.disabled=W,this.replaced=W,this.init()},T=Math.sqrt,I=Math.min,E=Math.max,_=Math.abs,P=Math.sin,O=Math.cos,U=parseFloat;M.prototype={constructor:M,support:{canvas:l.isFunction(l("")[0].getContext)},init:function(){var e=this.defaults;l.each(e,function(t,i){switch(t){case"aspectRatio":e[t]=_(U(i))||NaN;break;case"autoCropArea":e[t]=_(U(i))||.8;break;case"minWidth":case"minHeight":e[t]=_(U(i))||0;break;case"maxWidth":case"maxHeight":e[t]=_(U(i))||1/0}}),this.image={rotate:0},this.load()},load:function(){var t,i,e=this,h=this.$element,a=this.element,s=this.image,r="";h.is("img")?i=h.prop("src"):h.is("canvas")&&this.support.canvas&&(i=a.toDataURL()),i&&(this.replaced&&(s.rotate=0),this.defaults.checkImageOrigin&&(h.prop("crossOrigin")||this.isCrossOriginURL(i))&&(r=" crossOrigin"),this.$clone=t=l("'),t.one("load",function(){s.naturalWidth=this.naturalWidth||t.width(),s.naturalHeight=this.naturalHeight||t.height(),s.aspectRatio=s.naturalWidth/s.naturalHeight,e.url=i,e.ready=D,e.build()}),t.addClass(c).prependTo("body"))},isCrossOriginURL:function(t){var i=t.match(/^(https?:)\/\/([^\:\/\?#]+):?(\d*)/i);return!i||i[1]===a.protocol&&i[2]===a.hostname&&i[3]===a.port?W:D},build:function(){var t,i,e=this.$element,h=this.defaults;this.ready&&(this.built&&this.unbuild(),e.one($,h.build),t=l.Event($),e.trigger(t),t.isDefaultPrevented()||(this.$cropper=i=l(M.TEMPLATE),e.addClass(H),this.$clone.removeClass(c).prependTo(i),this.rotated||(this.$original=this.$clone.clone(),this.$original.addClass(H).prependTo(this.$cropper),this.originalImage=l.extend({},this.image)),this.$container=e.parent(),this.$container.append(i),this.$canvas=i.find(".cropper-canvas"),this.$dragger=i.find(".cropper-dragger"),this.$viewer=i.find(".cropper-viewer"),h.autoCrop?this.cropped=D:this.$dragger.addClass(H),h.dragCrop&&this.setDragMode("crop"),h.modal&&this.$canvas.addClass(p),!h.dashed&&this.$dragger.find(".cropper-dashed").addClass(H),!h.movable&&this.$dragger.find(".cropper-face").data(o,"move"),!h.resizable&&this.$dragger.find(".cropper-line, .cropper-point").addClass(H),this.addListeners(),this.initPreview(),this.built=D,this.update(),this.replaced=W,e.one(C,h.built),e.trigger(C)))},unbuild:function(){this.built&&(this.built=W,this.removeListeners(),this.$preview.empty(),this.$preview=r,this.$dragger=r,this.$canvas=r,this.$container=r,this.$cropper.remove(),this.$cropper=r)},update:function(t){this.initContainer(),this.initCropper(),this.initImage(),this.initDragger(),t?(this.setData(t,D),this.setDragMode("crop")):this.setData(this.defaults.data)},resize:function(){clearTimeout(this.resizing),this.resizing=setTimeout(l.proxy(this.update,this,this.getData()),200)},preview:function(){var t=this.image,e=this.dragger,h=t.width,a=t.height,s=e.left-t.left,r=e.top-t.top;this.$viewer.find("img").css({width:h,height:a,marginLeft:-s,marginTop:-r}),this.$preview.each(function(){var t=l(this),i=t.width()/e.width;t.find("img").css({width:h*i,height:a*i,marginLeft:-s*i,marginTop:-r*i})})},addListeners:function(){var t=this.defaults;this.$element.on(k,t.dragstart).on(R,t.dragmove).on(z,t.dragend),this.$cropper.on(u,l.proxy(this.dragstart,this)).on(y,l.proxy(this.dblclick,this)),t.zoomable&&this.$cropper.on(x,l.proxy(this.wheel,this)),t.multiple?this.$cropper.on(w,l.proxy(this.dragmove,this)).on(v,l.proxy(this.dragend,this)):h.on(w,this._dragmove=X(this.dragmove,this)).on(v,this._dragend=X(this.dragend,this)),e.on(b,this._resize=X(this.resize,this))},removeListeners:function(){var t=this.defaults;this.$element.off(k,t.dragstart).off(R,t.dragmove).off(z,t.dragend),this.$cropper.off(u,this.dragstart).off(y,this.dblclick),t.zoomable&&this.$cropper.off(x,this.wheel),t.multiple?this.$cropper.off(w,this.dragmove).off(v,this.dragend):h.off(w,this._dragmove).off(v,this._dragend),e.off(b,this._resize)},initPreview:function(){var t='';this.$preview=l(this.defaults.preview),this.$viewer.html(t),this.$preview.html(t).find("img").css("cssText","min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;")},initContainer:function(){var t=this.$container;t!==r&&(this.container={width:E(t.width(),300),height:E(t.height(),150)})},initCropper:function(){var t,i=this.container,e=this.image;0<=e.naturalWidth*i.height/e.naturalHeight-i.width?(t={width:i.width,height:i.width/e.aspectRatio,left:0}).top=(i.height-t.height)/2:(t={width:i.height*e.aspectRatio,height:i.height,top:0}).left=(i.width-t.width)/2,this.$cropper&&this.$cropper.css({width:t.width,height:t.height,left:t.left,top:t.top}),this.cropper=t},initImage:function(){var t=this.image,i=this.cropper,e={_width:i.width,_height:i.height,width:i.width,height:i.height,left:0,top:0,ratio:i.width/t.naturalWidth};this.defaultImage=l.extend({},t,e),t._width!==i.width||t._height!==i.height?l.extend(t,e):(t=l.extend({},e,t),this.replaced&&(t.ratio=e.ratio)),this.image=t,this.renderImage()},renderImage:function(t){var i=this.image;"zoom"===t&&(i.left-=(i.width-i.oldWidth)/2,i.top-=(i.height-i.oldHeight)/2),i.left=I(E(i.left,i._width-i.width),0),i.top=I(E(i.top,i._height-i.height),0),this.$clone.css({width:i.width,height:i.height,marginLeft:i.left,marginTop:i.top}),t&&(this.defaults.done(this.getData()),this.preview())},initDragger:function(){var t,i=this.defaults,e=this.cropper,h=i.aspectRatio||this.image.aspectRatio,a=this.image.ratio;(t=0<=e.height*h-e.width?{height:e.width/h,width:e.width,left:0,top:(e.height-e.width/h)/2,maxWidth:e.width,maxHeight:e.width/h}:{height:e.height,width:e.height*h,left:(e.width-e.height*h)/2,top:0,maxWidth:e.height*h,maxHeight:e.height}).minWidth=0,t.minHeight=0,i.aspectRatio?(isFinite(i.maxWidth)?(t.maxWidth=I(t.maxWidth,i.maxWidth*a),t.maxHeight=t.maxWidth/h):isFinite(i.maxHeight)&&(t.maxHeight=I(t.maxHeight,i.maxHeight*a),t.maxWidth=t.maxHeight*h),0t.maxWidth?(t.width=t.maxWidth,t.left=t.oldLeft):t.widtht.maxHeight?(t.height=t.maxHeight,t.top=t.oldTop):t.height').one("load",function(){s.width=this.width,s.height=this.height,e.clearRect(0,0,s.width,s.height),e.drawImage(this,0,0),h.load()})))},setData:function(t,i){var e=this.cropper,h=this.dragger,a=this.image,s=this.defaults.aspectRatio;this.built&&typeof t!==n&&((t===r||l.isEmptyObject(t))&&(h=l.extend({},this.defaultDragger)),l.isPlainObject(t)&&!l.isEmptyObject(t)&&(i||(this.defaults.data=t),t=this.transformData(t),L(t.x)&&t.x<=e.width-a.left&&(h.left=t.x+a.left),L(t.y)&&t.y<=e.height-a.top&&(h.top=t.y+a.top),s?L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth?(h.width=t.width,h.height=h.width/s):L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height,h.width=h.height*s):(L(t.width)&&t.width<=h.maxWidth&&t.width>=h.minWidth&&(h.width=t.width),L(t.height)&&t.height<=h.maxHeight&&t.height>=h.minHeight&&(h.height=t.height))),this.dragger=h,this.renderDragger())},getData:function(t){var i=this.dragger,e=this.image,h={};return this.built&&(h={x:i.left-e.left,y:i.top-e.top,width:i.width,height:i.height},h=this.transformData(h,D,t)),h},transformData:function(t,e,h){var a=this.image.ratio,s={};return l.each(t,function(t,i){i=U(i),g.test(t)&&!isNaN(i)&&(s[t]=e?h?Math.round(i/a):i/a:i*a)}),s},setAspectRatio:function(t){var i="auto"===t;t=U(t),(i||!isNaN(t)&&0")[0],s=this.getData(),r="";return l.isPlainObject(t)||(e=i,i=t,t={}),t=l.extend({width:s.width,height:s.height},t),this.cropped&&this.support.canvas&&(a.width=t.width,a.height=t.height,h=a.getContext("2d"),"image/jpeg"===i&&(h.fillStyle="#fff",h.fillRect(0,0,t.width,t.height)),h.drawImage(this.$clone[0],s.x,s.y,s.width,s.height,0,0,t.width,t.height),r=a.toDataURL(i,e)),r},setDragMode:function(t){var i=this.$canvas,e=this.defaults,h=W,a=W;if(this.built&&!this.disabled){switch(t){case"crop":e.dragCrop&&(h=D,i.data(o,t));break;case"move":a=D,i.data(o,t);break;default:i.removeData(o)}i.toggleClass(f,h).toggleClass("cropper-move",a)}},enable:function(){this.built&&(this.disabled=W,this.$cropper.removeClass(m))},disable:function(){this.built&&(this.disabled=D,this.$cropper.addClass(m))},rotate:function(t){var i=this.image;t=U(t)||0,this.built&&0!==t&&!this.disabled&&this.defaults.rotatable&&this.support.canvas&&(this.rotated=D,t=i.rotate=(i.rotate+t)%360,this.replace(this.getRotatedDataURL(t),!0))},getRotatedDataURL:function(t){var i=l("")[0],e=i.getContext("2d"),h=t*Math.PI/180,a=_(t)%180,s=(90<0 6="5-canvas"><0 6="5-dragger"><1 6="5-viewer"><1 6="5-8 8-h"><1 6="5-8 8-v"><1 6="5-face" 3-2="all"><1 6="5-7 7-e" 3-2="e"><1 6="5-7 7-n" 3-2="n"><1 6="5-7 7-w" 3-2="w"><1 6="5-7 7-s" 3-2="s"><1 6="5-4 4-e" 3-2="e"><1 6="5-4 4-n" 3-2="n"><1 6="5-4 4-w" 3-2="w"><1 6="5-4 4-s" 3-2="s"><1 6="5-4 4-ne" 3-2="ne"><1 6="5-4 4-nw" 3-2="nw"><1 6="5-4 4-sw" 3-2="sw"><1 6="5-4 4-se" 3-2="se">'.replace(/\d+/g,function(t){return i[t]})),M.DEFAULTS={aspectRatio:"auto",autoCropArea:.8,data:{},done:l.noop,preview:"",multiple:W,autoCrop:D,dragCrop:D,dashed:D,modal:D,movable:D,resizable:D,zoomable:D,rotatable:D,checkImageOrigin:D,minWidth:0,minHeight:0,maxWidth:1/0,maxHeight:1/0,build:r,built:r,dragstart:r,dragmove:r,dragend:r},M.setDefaults=function(t){l.extend(M.DEFAULTS,t)},M.other=l.fn.cropper,l.fn.cropper=function(h){var a,s=Y(arguments,1);return this.each(function(){var t,i=l(this),e=i.data("cropper");e||i.data("cropper",e=new M(this,h)),"string"==typeof h&&l.isFunction(t=e[h])&&(a=t.apply(e,s))}),typeof a!==n?a:this},l.fn.cropper.Constructor=M,l.fn.cropper.setDefaults=M.setDefaults,l.fn.cropper.noConflict=function(){return l.fn.cropper=M.other,this}});