{"version":3,"sources":["webpack:///./src/components/Uploader.vue?80e9","webpack:///./src/components/Uploader.vue?a084","webpack:///src/components/Uploader.vue","webpack:///./src/components/Uploader.vue?e2c6","webpack:///./src/components/Uploader.vue","webpack:///./node_modules/vue-cropperjs/dist/VueCropper.js","webpack:///./node_modules/cropperjs/dist/cropper.js"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_2_0_node_modules_css_loader_index_js_ref_6_oneOf_2_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_2_2_node_modules_stylus_loader_index_js_ref_6_oneOf_2_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_930749ec_lang_stylus_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_2_0_node_modules_css_loader_index_js_ref_6_oneOf_2_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_2_2_node_modules_stylus_loader_index_js_ref_6_oneOf_2_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Uploader_vue_vue_type_style_index_0_id_930749ec_lang_stylus_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","n","render","_vm","this","_h","$createElement","_c","_self","attrs","helper","$t","getHelper","error","ref","auto-expand","hide-upload-button","inverted","color","url","multiple","extensions","getExtensions","upload-factory","uploadFile","disable","float-label","imageSize","on","add","fileAdded","remove:abort","uploadCancel","remove:cancel","content-css","maxWidth","getMaxWidth","minWidth","minHeight","model","value","crop_modal","callback","$$v","expression","slot","flat","round","dense","icon","click","$event","canceledCrop","_v","_s","staticClass","src","original_image","guides","drag-mode","view-mode","aspect-ratio","aspect_ratio","background","img-style","width","height","class","getOrder","label","cropImage","staticRenderFns","_withStripped","Uploadervue_type_script_lang_js_","i18nOptions","namespaces","props","data","upload_url","urls","cancel_token","source","components","VueCropper","VueCropper_default","a","computed","objectSpread_default","Object","vuex_esm","access_token","getHeader","headers","defineProperty_default","content-type","authorization","btoa","content_type","size","getCroppedSize","concat","$q","platform","is","mobile","aspect_ratio_string","methods","file","$refs","uploader","upload","cancel","showCropper","_this","cropped","reader","FileReader","onload","event","target","result","cropper","replace","readAsDataURL","reset","blob","getCroppedCanvas","toDataURL","newFile","dataURItoBlob","name","Math","random","toString","substr","updateProgress","_this2","Promise","resolve","fd","FormData","append","filename","split","custom_directory","client_id","slug","loading","show","$axios","post","cancelToken","token","then","response","origin","blobServiceClient","BlobServiceClient","base_url","sas_token","main","_ref","asyncToGenerator_default","regeneratorRuntime","mark","_callee","container_client","block_blob_client","fd_complete","wrap","_context","prev","next","getContainerClient","getBlockBlobClient","uploadBrowserData","sent","file_id","item","$emit","fileUrl","finally","hide","stop","apply","arguments","type","policy","file_name","key_path","file_bucket_path","fd_s3","key","signature","CancelToken","onUploadProgress","loaded","total","fileUrlSigned","catch","e","console","log","dataURI","byteString","atob","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","watch","components_Uploadervue_type_script_lang_js_","component","componentNormalizer","options","__file","__webpack_exports__","defineProperty","exports","_vue","_vue2","_interopRequireDefault","_cropperjs","_cropperjs2","obj","__esModule","default","_objectWithoutProperties","keys","indexOf","prototype","hasOwnProperty","call","CropperComponent","extend","h","style","containerStyle","alt","imgStyle","String","viewMode","Number","dragMode","aspectRatio","preview","responsive","Boolean","restore","checkCrossOrigin","checkOrientation","modal","center","highlight","autoCrop","autoCropArea","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","wheelZoomRatio","cropBoxMovable","cropBoxResizable","toggleDragModeOnDblclick","minCanvasWidth","minCanvasHeight","minCropBoxWidth","minCropBoxHeight","minContainerWidth","minContainerHeight","ready","Function","cropstart","cropmove","cropend","crop","zoom","mounted","_$options$props","$options","undefined","img","clear","initCrop","onlyColorChanged","enable","destroy","move","offsetX","offsetY","moveTo","x","y","relativeZoom","ratio","_originalEvent","zoomTo","rotate","degree","rotateTo","scaleX","_scaleX","scaleY","_scaleY","scale","getData","rounded","setData","getContainerData","getImageData","getCanvasData","setCanvasData","getCropBoxData","setCropBoxData","setAspectRatio","setDragMode","mode","global","factory","module","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread2","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","Symbol","iterator","constructor","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","Array","isArray","_arrayLikeToArray","iter","from","o","minLen","slice","test","len","arr2","IS_BROWSER","window","document","WINDOW","IS_TOUCH_DEVICE","documentElement","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_TOUCH_START","EVENT_TOUCH_MOVE","EVENT_TOUCH_END","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_READY","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","MIN_CONTAINER_WIDTH","MIN_CONTAINER_HEIGHT","DEFAULTS","initialAspectRatio","NaN","TEMPLATE","isNaN","isNumber","isPositiveNumber","Infinity","isUndefined","isObject","isPlainObject","_constructor","isFunction","toArray","assign","_len","args","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","REGEXP_SUFFIX","setStyle","element","styles","property","hasClass","classList","contains","className","addClass","elem","trim","removeClass","remove","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","toLowerCase","dataset","getAttribute","setAttribute","removeData","removeAttribute","REGEXP_SPACES","onceSupported","supported","once","listener","get","set","addEventListener","removeEventListener","removeListener","handler","listeners","addListener","_handler","_element$listeners","_len2","_key2","dispatchEvent","Event","CustomEvent","detail","bubbles","cancelable","createEvent","initCustomEvent","getOffset","box","getBoundingClientRect","left","pageXOffset","clientLeft","top","pageYOffset","clientTop","location","REGEXP_ORIGINS","isCrossOriginURL","parts","match","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","translateX","translateY","values","transform","join","WebkitTransform","msTransform","getMaxZoomRatio","pointers","pointers2","maxRatio","pointer","pointerId","pointer2","x1","abs","startX","y1","startY","x2","endX","y2","endY","z1","sqrt","z2","getPointer","_ref2","endOnly","pageX","pageY","end","getPointersCenter","count","_ref3","getAdjustedSizes","_ref4","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","_ref5","arc","PI","sinArc","sin","cosArc","cos","newWidth","newHeight","getSourceCanvas","image","_ref6","_ref7","_ref8","imageAspectRatio","imageNaturalWidth","naturalWidth","imageNaturalHeight","naturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","_ref8$minHeight","canvas","createElement","context","getContext","maxSizes","minSizes","min","max","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","save","translate","drawImage","map","param","floor","fromCharCode","getStringFromCharCode","dataView","start","str","getUint8","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","arrayBuffer","uint8","arrayBufferToDataURL","mimeType","chunks","chunkSize","subarray","resetAndGetOrientation","orientation","DataView","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","_offset","_length","setUint16","parseOrientation","initContainer","initCanvas","initCropBox","renderCanvas","renderCropBox","container","containerData","offsetWidth","offsetHeight","imageData","rotated","canvasWidth","canvasHeight","canvasData","limited","limitCanvas","oldLeft","oldTop","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","changed","transformed","_getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","disabled","initPreview","crossOrigin","crossOriginUrl","viewBox","appendChild","viewBoxImage","previews","ownerDocument","querySelectorAll","querySelector","el","html","innerHTML","cssText","resetPreview","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","getElementsByTagName","events","bind","onCropStart","cropStart","onWheel","wheel","passive","capture","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","ratioX","ratioY","dragBox","delta","preventDefault","wheeling","setTimeout","deltaY","wheelDelta","buttons","button","pointerType","ctrlKey","action","changedTouches","touch","identifier","originalEvent","cropping","change","right","bottom","renderable","shiftKey","range","check","side","p","initialImageData","hasSameSize","isImg","replaced","uncreate","load","originalUrl","_this$canvasData","pivot","oldRatio","sized","widthChanged","heightChanged","HTMLCanvasElement","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","sourceWidth","sourceHeight","srcX","srcY","croppable","AnotherCropper","Cropper","tagName","Error","reloading","sizing","init","read","clone","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","getResponseHeader","abort","onloadend","open","responseType","withCredentials","send","_parseOrientation","parentNode","insertBefore","nextSibling","isIOSWebKit","navigator","userAgent","done","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild"],"mappings":"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","file":"js/89288eb2.9f6768bc.js","sourcesContent":["import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-2-0!../../node_modules/css-loader/index.js??ref--6-oneOf-2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-2-2!../../node_modules/stylus-loader/index.js??ref--6-oneOf-2-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=style&index=0&id=930749ec&lang=stylus&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-2-0!../../node_modules/css-loader/index.js??ref--6-oneOf-2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-2-2!../../node_modules/stylus-loader/index.js??ref--6-oneOf-2-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=style&index=0&id=930749ec&lang=stylus&scoped=true&\"","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"q-field\",\n { attrs: { helper: _vm.$t(_vm.getHelper), error: _vm.error } },\n [\n _c(\"q-uploader\", {\n ref: \"uploader\",\n attrs: {\n \"auto-expand\": \"\",\n \"hide-upload-button\": \"\",\n inverted: \"\",\n color: \"primary\",\n url: \"\",\n multiple: _vm.multiple,\n extensions: _vm.getExtensions,\n \"upload-factory\": _vm.uploadFile,\n disable: _vm.disable,\n \"float-label\": _vm.imageSize\n },\n on: {\n add: _vm.fileAdded,\n \"remove:abort\": _vm.uploadCancel,\n \"remove:cancel\": _vm.uploadCancel\n }\n }),\n _c(\n \"q-modal\",\n {\n attrs: {\n \"content-css\": {\n maxWidth: _vm.getMaxWidth,\n minWidth: _vm.getMaxWidth,\n minHeight: \"80vh\"\n }\n },\n model: {\n value: _vm.crop_modal,\n callback: function($$v) {\n _vm.crop_modal = $$v\n },\n expression: \"crop_modal\"\n }\n },\n [\n _c(\n \"q-modal-layout\",\n [\n _c(\n \"q-toolbar\",\n { attrs: { slot: \"header\" }, slot: \"header\" },\n [\n _c(\"q-btn\", {\n attrs: {\n flat: \"\",\n round: \"\",\n dense: \"\",\n icon: \"fas fa-times\"\n },\n on: {\n click: function($event) {\n return _vm.canceledCrop()\n }\n }\n }),\n _c(\"q-toolbar-title\", [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.$t(\"crop_image\")) +\n \"\\n\\t\\t\\t\\t\"\n )\n ])\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"layout-padding\" },\n [\n _c(\"vue-cropper\", {\n ref: \"cropper\",\n attrs: {\n src: _vm.original_image,\n guides: true,\n \"drag-mode\": \"crop\",\n \"view-mode\": 1,\n \"aspect-ratio\": _vm.aspect_ratio\n ? _vm.aspect_ratio\n : 16 / 9,\n background: true,\n \"img-style\": { width: \"auto\", height: \"500px\" }\n }\n }),\n _c(\n \"div\",\n { staticClass: \"row q-mt-sm gutter-sm justify-end\" },\n [\n _c(\n \"div\",\n {\n staticClass: \"col-xs-12 col-sm-4\",\n class: _vm.getOrder(\"cancel\")\n },\n [\n _c(\"q-btn\", {\n staticClass: \"full-width\",\n attrs: {\n color: \"tertiary\",\n label: _vm.$t(\"cancel\")\n },\n on: {\n click: function($event) {\n return _vm.canceledCrop()\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"col-xs-12 col-sm-4\",\n class: _vm.getOrder(\"crop\")\n },\n [\n _c(\"q-btn\", {\n staticClass: \"full-width\",\n attrs: { color: \"primary\", label: _vm.$t(\"crop\") },\n on: {\n click: function($event) {\n return _vm.cropImage()\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Uploader.vue?vue&type=template&id=930749ec&scoped=true&\"\nimport script from \"./Uploader.vue?vue&type=script&lang=js&\"\nexport * from \"./Uploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Uploader.vue?vue&type=style&index=0&id=930749ec&lang=stylus&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"930749ec\",\n null\n \n)\n\ncomponent.options.__file = \"Uploader.vue\"\nexport default component.exports","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _cropperjs = require('cropperjs');\n\nvar _cropperjs2 = _interopRequireDefault(_cropperjs);\n\nrequire('cropperjs/dist/cropper.css');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar CropperComponent = _vue2.default.extend({\n render: function render(h) {\n return h('div', { style: this.containerStyle }, [h('img', {\n ref: 'img',\n attrs: {\n src: this.src,\n alt: this.alt || 'image',\n style: 'max-width: 100%'\n },\n style: this.imgStyle\n })]);\n },\n\n props: {\n 'containerStyle': Object,\n 'src': {\n type: String,\n default: ''\n },\n 'alt': String,\n 'imgStyle': Object,\n\n 'viewMode': Number,\n 'dragMode': String,\n 'aspectRatio': Number,\n 'data': Object,\n 'preview': String,\n 'responsive': {\n type: Boolean,\n default: true\n },\n 'restore': {\n type: Boolean,\n default: true\n },\n 'checkCrossOrigin': {\n type: Boolean,\n default: true\n },\n 'checkOrientation': {\n type: Boolean,\n default: true\n },\n 'modal': {\n type: Boolean,\n default: true\n },\n 'guides': {\n type: Boolean,\n default: true\n },\n 'center': {\n type: Boolean,\n default: true\n },\n 'highlight': {\n type: Boolean,\n default: true\n },\n 'background': {\n type: Boolean,\n default: true\n },\n 'autoCrop': {\n type: Boolean,\n default: true\n },\n 'autoCropArea': Number,\n 'movable': {\n type: Boolean,\n default: true\n },\n 'rotatable': {\n type: Boolean,\n default: true\n },\n 'scalable': {\n type: Boolean,\n default: true\n },\n 'zoomable': {\n type: Boolean,\n default: true\n },\n 'zoomOnTouch': {\n type: Boolean,\n default: true\n },\n 'zoomOnWheel': {\n type: Boolean,\n default: true\n },\n 'wheelZoomRatio': Number,\n 'cropBoxMovable': {\n type: Boolean,\n default: true\n },\n 'cropBoxResizable': {\n type: Boolean,\n default: true\n },\n 'toggleDragModeOnDblclick': {\n type: Boolean,\n default: true\n },\n\n 'minCanvasWidth': Number,\n 'minCanvasHeight': Number,\n 'minCropBoxWidth': Number,\n 'minCropBoxHeight': Number,\n 'minContainerWidth': Number,\n 'minContainerHeight': Number,\n\n 'ready': Function,\n 'cropstart': Function,\n 'cropmove': Function,\n 'cropend': Function,\n 'crop': Function,\n 'zoom': Function\n },\n mounted: function mounted() {\n var _$options$props = this.$options.props,\n containerStyle = _$options$props.containerStyle,\n src = _$options$props.src,\n alt = _$options$props.alt,\n imgStyle = _$options$props.imgStyle,\n data = _objectWithoutProperties(_$options$props, ['containerStyle', 'src', 'alt', 'imgStyle']);\n\n var props = {};\n\n for (var key in data) {\n if (this[key] !== undefined) {\n props[key] = this[key];\n }\n }\n\n this.cropper = new _cropperjs2.default(this.$refs.img, props);\n },\n\n methods: {\n reset: function reset() {\n return this.cropper.reset();\n },\n clear: function clear() {\n return this.cropper.clear();\n },\n initCrop: function initCrop() {\n return this.cropper.crop();\n },\n replace: function replace(url) {\n var onlyColorChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this.cropper.replace(url, onlyColorChanged);\n },\n enable: function enable() {\n return this.cropper.enable();\n },\n disable: function disable() {\n return this.cropper.disable();\n },\n destroy: function destroy() {\n return this.cropper.destroy();\n },\n move: function move(offsetX, offsetY) {\n return this.cropper.move(offsetX, offsetY);\n },\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n\n return this.cropper.moveTo(x, y);\n },\n relativeZoom: function relativeZoom(ratio, _originalEvent) {\n return this.cropper.zoom(ratio, _originalEvent);\n },\n zoomTo: function zoomTo(ratio, _originalEvent) {\n return this.cropper.zoomTo(ratio, _originalEvent);\n },\n rotate: function rotate(degree) {\n return this.cropper.rotate(degree);\n },\n rotateTo: function rotateTo(degree) {\n return this.cropper.rotateTo(degree);\n },\n scaleX: function scaleX(_scaleX) {\n return this.cropper.scaleX(_scaleX);\n },\n scaleY: function scaleY(_scaleY) {\n return this.cropper.scaleY(_scaleY);\n },\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n\n return this.cropper.scale(scaleX, scaleY);\n },\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return this.cropper.getData(rounded);\n },\n setData: function setData(data) {\n return this.cropper.setData(data);\n },\n getContainerData: function getContainerData() {\n return this.cropper.getContainerData();\n },\n getImageData: function getImageData() {\n return this.cropper.getImageData();\n },\n getCanvasData: function getCanvasData() {\n return this.cropper.getCanvasData();\n },\n setCanvasData: function setCanvasData(data) {\n return this.cropper.setCanvasData(data);\n },\n getCropBoxData: function getCropBoxData() {\n return this.cropper.getCropBoxData();\n },\n setCropBoxData: function setCropBoxData(data) {\n return this.cropper.setCropBoxData(data);\n },\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return this.cropper.getCroppedCanvas(options);\n },\n setAspectRatio: function setAspectRatio(aspectRatio) {\n return this.cropper.setAspectRatio(aspectRatio);\n },\n setDragMode: function setDragMode(mode) {\n return this.cropper.setDragMode(mode);\n }\n }\n});\n\nvar VueCropper = _vue2.default.component('vue-cropper', CropperComponent);\n\nexports.default = VueCropper;","/*!\n * Cropper.js v1.5.12\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2021-06-12T08:00:17.411Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());\n}(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n var NAMESPACE = 'cropper'; // Actions\n\n var ACTION_ALL = 'all';\n var ACTION_CROP = 'crop';\n var ACTION_MOVE = 'move';\n var ACTION_ZOOM = 'zoom';\n var ACTION_EAST = 'e';\n var ACTION_WEST = 'w';\n var ACTION_SOUTH = 's';\n var ACTION_NORTH = 'n';\n var ACTION_NORTH_EAST = 'ne';\n var ACTION_NORTH_WEST = 'nw';\n var ACTION_SOUTH_EAST = 'se';\n var ACTION_SOUTH_WEST = 'sw'; // Classes\n\n var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\n\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\n\n var DRAG_MODE_CROP = 'crop';\n var DRAG_MODE_MOVE = 'move';\n var DRAG_MODE_NONE = 'none'; // Events\n\n var EVENT_CROP = 'crop';\n var EVENT_CROP_END = 'cropend';\n var EVENT_CROP_MOVE = 'cropmove';\n var EVENT_CROP_START = 'cropstart';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n var EVENT_READY = 'ready';\n var EVENT_RESIZE = 'resize';\n var EVENT_WHEEL = 'wheel';\n var EVENT_ZOOM = 'zoom'; // Mime types\n\n var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\n\n var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n var REGEXP_DATA_URL = /^data:/;\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\n // Inspired by the default width and height of a canvas element.\n\n var MIN_CONTAINER_WIDTH = 200;\n var MIN_CONTAINER_HEIGHT = 100;\n\n var DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0,\n // 0, 1, 2, 3\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP,\n // 'crop', 'move' or 'none'\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n // An object with the previous cropping result data\n data: null,\n // A selector for adding extra containers to preview\n preview: '',\n // Re-render the cropper when resize the window\n responsive: true,\n // Restore the cropped area after resize the window\n restore: true,\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n // Show the black modal\n modal: true,\n // Show the dashed lines for guiding\n guides: true,\n // Show the center indicator for guiding\n center: true,\n // Show the white modal to highlight the crop box\n highlight: true,\n // Show the grid background\n background: true,\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n // Enable to move the image\n movable: true,\n // Enable to rotate the image\n rotatable: true,\n // Enable to scale the image\n scalable: true,\n // Enable to zoom the image\n zoomable: true,\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n // Enable to move the crop box\n cropBoxMovable: true,\n // Enable to resize the crop box\n cropBoxResizable: true,\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: MIN_CONTAINER_WIDTH,\n minContainerHeight: MIN_CONTAINER_HEIGHT,\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n };\n\n var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
';\n\n /**\n * Check if the given value is not a number.\n */\n\n var isNaN = Number.isNaN || WINDOW.isNaN;\n /**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\n function isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n /**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\n function isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\n function isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n }\n /**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n var slice = Array.prototype.slice;\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n /**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\n function forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length)\n /* array-like */\n ) {\n toArray(data).forEach(function (value, key) {\n callback.call(data, value, key, data);\n });\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n\n return data;\n }\n /**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\n\n var assign = Object.assign || function assign(target) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (isObject(target) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n target[key] = arg[key];\n });\n }\n });\n }\n\n return target;\n };\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n /**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\n function setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value = \"\".concat(value, \"px\");\n }\n\n style[property] = value;\n });\n }\n /**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\n function hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n }\n /**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\n function addClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n\n var className = element.className.trim();\n\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n }\n /**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\n function removeClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n }\n /**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\n function toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n }\n var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n /**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\n function toParamCase(value) {\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n }\n /**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\n function getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n\n if (element.dataset) {\n return element.dataset[name];\n }\n\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\n }\n /**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\n function setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n }\n }\n /**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\n\n function removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (error) {\n element[name] = undefined;\n }\n } else if (element.dataset) {\n // #128 Safari not allows to delete dataset property\n try {\n delete element.dataset[name];\n } catch (error) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\n }\n }\n var REGEXP_SPACES = /\\s\\s*/;\n\n var onceSupported = function () {\n var supported = false;\n\n if (IS_BROWSER) {\n var once = false;\n\n var listener = function listener() {};\n\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n\n return supported;\n }();\n /**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\n function removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n\n element.removeEventListener(event, handler, options);\n });\n }\n /**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n function addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n listener.apply(element, args);\n };\n\n if (!listeners[event]) {\n listeners[event] = {};\n }\n\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n\n element.addEventListener(event, _handler, options);\n });\n }\n /**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\n function dispatchEvent(element, type, data) {\n var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, {\n detail: data,\n bubbles: true,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n\n return element.dispatchEvent(event);\n }\n /**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\n function getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n }\n var location = WINDOW.location;\n var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n /**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\n\n function isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n }\n /**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\n\n function addTimestamp(url) {\n var timestamp = \"timestamp=\".concat(new Date().getTime());\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n }\n /**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\n function getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n } // Rotate should come first before scale to match orientation transform\n\n\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n }\n /**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\n function getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n\n var maxRatio = 0;\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\n maxRatio = ratio;\n }\n });\n });\n return maxRatio;\n }\n /**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\n function getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n startX: pageX,\n startY: pageY\n }, end);\n }\n /**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\n function getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n\n function getAdjustedSizes(_ref4) // or 'cover'\n {\n var aspectRatio = _ref4.aspectRatio,\n height = _ref4.height,\n width = _ref4.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width: width,\n height: height\n };\n }\n /**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\n\n function getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n degree = Math.abs(degree) % 180;\n\n if (degree === 90) {\n return {\n width: height,\n height: width\n };\n }\n\n var arc = degree % 90 * Math.PI / 180;\n var sinArc = Math.sin(arc);\n var cosArc = Math.cos(arc);\n var newWidth = width * cosArc + height * sinArc;\n var newHeight = width * sinArc + height * cosArc;\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\n }\n /**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\n\n function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n var imageAspectRatio = _ref6.aspectRatio,\n imageNaturalWidth = _ref6.naturalWidth,\n imageNaturalHeight = _ref6.naturalHeight,\n _ref6$rotate = _ref6.rotate,\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n var aspectRatio = _ref7.aspectRatio,\n naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight;\n var _ref8$fillColor = _ref8.fillColor,\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n\n var destMaxSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var destMinSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = fillColor;\n context.fillRect(0, 0, width, height);\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n context.imageSmoothingQuality = imageSmoothingQuality;\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n context.restore();\n return canvas;\n }\n var fromCharCode = String.fromCharCode;\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n length += start;\n\n for (var i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n /**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\n\n function dataURLToArrayBuffer(dataURL) {\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var arrayBuffer = new ArrayBuffer(binary.length);\n var uint8 = new Uint8Array(arrayBuffer);\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n return arrayBuffer;\n }\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = []; // Chunk Typed Array for better performance (#435)\n\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (error) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n\n var render = {\n render: function render() {\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n },\n initContainer: function initContainer() {\n var element = this.element,\n options = this.options,\n container = this.container,\n cropper = this.cropper;\n var minWidth = Number(options.minContainerWidth);\n var minHeight = Number(options.minContainerHeight);\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n var containerData = {\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n };\n this.containerData = containerData;\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n // Canvas (image wrapper)\n initCanvas: function initCanvas() {\n var containerData = this.containerData,\n imageData = this.imageData;\n var viewMode = this.options.viewMode;\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerData.width;\n var canvasHeight = containerData.height;\n\n if (containerData.height * aspectRatio > containerData.width) {\n if (viewMode === 3) {\n canvasWidth = containerData.height * aspectRatio;\n } else {\n canvasHeight = containerData.width / aspectRatio;\n }\n } else if (viewMode === 3) {\n canvasHeight = containerData.width / aspectRatio;\n } else {\n canvasWidth = containerData.height * aspectRatio;\n }\n\n var canvasData = {\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n width: canvasWidth,\n height: canvasHeight\n };\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n canvasData.left = (containerData.width - canvasData.width) / 2;\n canvasData.top = (containerData.height - canvasData.height) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n this.initialCanvasData = assign({}, canvasData);\n },\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var viewMode = options.viewMode;\n var aspectRatio = canvasData.aspectRatio;\n var cropped = this.cropped && cropBoxData;\n\n if (sizeLimited) {\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n\n if (viewMode > 1) {\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n\n if (viewMode === 3) {\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n } else if (viewMode > 0) {\n if (minCanvasWidth) {\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n } else if (minCanvasHeight) {\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n } else if (cropped) {\n minCanvasWidth = cropBoxData.width;\n minCanvasHeight = cropBoxData.height;\n\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n }\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minCanvasWidth,\n height: minCanvasHeight\n });\n\n minCanvasWidth = _getAdjustedSizes.width;\n minCanvasHeight = _getAdjustedSizes.height;\n canvasData.minWidth = minCanvasWidth;\n canvasData.minHeight = minCanvasHeight;\n canvasData.maxWidth = Infinity;\n canvasData.maxHeight = Infinity;\n }\n\n if (positionLimited) {\n if (viewMode > (cropped ? 0 : 1)) {\n var newCanvasLeft = containerData.width - canvasData.width;\n var newCanvasTop = containerData.height - canvasData.height;\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n\n if (cropped && this.limited) {\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n canvasData.maxLeft = cropBoxData.left;\n canvasData.maxTop = cropBoxData.top;\n\n if (viewMode === 2) {\n if (canvasData.width >= containerData.width) {\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n }\n\n if (canvasData.height >= containerData.height) {\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n }\n }\n }\n } else {\n canvasData.minLeft = -canvasData.width;\n canvasData.minTop = -canvasData.height;\n canvasData.maxLeft = containerData.width;\n canvasData.maxTop = containerData.height;\n }\n }\n },\n renderCanvas: function renderCanvas(changed, transformed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n\n if (transformed) {\n var _getRotatedSizes = getRotatedSizes({\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n degree: imageData.rotate || 0\n }),\n naturalWidth = _getRotatedSizes.width,\n naturalHeight = _getRotatedSizes.height;\n\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n canvasData.left -= (width - canvasData.width) / 2;\n canvasData.top -= (height - canvasData.height) / 2;\n canvasData.width = width;\n canvasData.height = height;\n canvasData.aspectRatio = naturalWidth / naturalHeight;\n canvasData.naturalWidth = naturalWidth;\n canvasData.naturalHeight = naturalHeight;\n this.limitCanvas(true, false);\n }\n\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n canvasData.left = canvasData.oldLeft;\n }\n\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n canvasData.top = canvasData.oldTop;\n }\n\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n this.limitCanvas(false, true);\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n setStyle(this.canvas, assign({\n width: canvasData.width,\n height: canvasData.height\n }, getTransforms({\n translateX: canvasData.left,\n translateY: canvasData.top\n })));\n this.renderImage(changed);\n\n if (this.cropped && this.limited) {\n this.limitCropBox(true, true);\n }\n },\n renderImage: function renderImage(changed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n assign(imageData, {\n width: width,\n height: height,\n left: (canvasData.width - width) / 2,\n top: (canvasData.height - height) / 2\n });\n setStyle(this.image, assign({\n width: imageData.width,\n height: imageData.height\n }, getTransforms(assign({\n translateX: imageData.left,\n translateY: imageData.top\n }, imageData))));\n\n if (changed) {\n this.output();\n }\n },\n initCropBox: function initCropBox() {\n var options = this.options,\n canvasData = this.canvasData;\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n var autoCropArea = Number(options.autoCropArea) || 0.8;\n var cropBoxData = {\n width: canvasData.width,\n height: canvasData.height\n };\n\n if (aspectRatio) {\n if (canvasData.height * aspectRatio > canvasData.width) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.cropBoxData = cropBoxData;\n this.limitCropBox(true, true); // Initialize auto crop area\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\n\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n this.initialCropBoxData = assign({}, cropBoxData);\n },\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData,\n limited = this.limited;\n var aspectRatio = options.aspectRatio;\n\n if (sizeLimited) {\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\n\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n\n if (aspectRatio) {\n if (minCropBoxWidth && minCropBoxHeight) {\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n } else if (minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else if (minCropBoxHeight) {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n } else {\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n }\n } // The minWidth/Height must be less than maxWidth/Height\n\n\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n cropBoxData.maxWidth = maxCropBoxWidth;\n cropBoxData.maxHeight = maxCropBoxHeight;\n }\n\n if (positionLimited) {\n if (limited) {\n cropBoxData.minLeft = Math.max(0, canvasData.left);\n cropBoxData.minTop = Math.max(0, canvasData.top);\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n } else {\n cropBoxData.minLeft = 0;\n cropBoxData.minTop = 0;\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\n }\n }\n },\n renderCropBox: function renderCropBox() {\n var options = this.options,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData;\n\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n cropBoxData.left = cropBoxData.oldLeft;\n }\n\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n cropBoxData.top = cropBoxData.oldTop;\n }\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n this.limitCropBox(false, true);\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n\n if (options.movable && options.cropBoxMovable) {\n // Turn to move the canvas when the crop box is equal to the container\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n }\n\n setStyle(this.cropBox, assign({\n width: cropBoxData.width,\n height: cropBoxData.height\n }, getTransforms({\n translateX: cropBoxData.left,\n translateY: cropBoxData.top\n })));\n\n if (this.cropped && this.limited) {\n this.limitCanvas(true, true);\n }\n\n if (!this.disabled) {\n this.output();\n }\n },\n output: function output() {\n this.preview();\n dispatchEvent(this.element, EVENT_CROP, this.getData());\n }\n };\n\n var preview = {\n initPreview: function initPreview() {\n var element = this.element,\n crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var alt = element.alt || 'The image to preview';\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = url;\n image.alt = alt;\n this.viewBox.appendChild(image);\n this.viewBoxImage = image;\n\n if (!preview) {\n return;\n }\n\n var previews = preview;\n\n if (typeof preview === 'string') {\n previews = element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n\n this.previews = previews;\n forEach(previews, function (el) {\n var img = document.createElement('img'); // Save the original size for recover\n\n setData(el, DATA_PREVIEW, {\n width: el.offsetWidth,\n height: el.offsetHeight,\n html: el.innerHTML\n });\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.src = url;\n img.alt = alt;\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * Add `height:auto` to override `height` attribute on IE8\n * (Occur only when margin-top <= -height)\n */\n\n 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;\"';\n el.innerHTML = '';\n el.appendChild(img);\n });\n },\n resetPreview: function resetPreview() {\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n setStyle(element, {\n width: data.width,\n height: data.height\n });\n element.innerHTML = data.html;\n removeData(element, DATA_PREVIEW);\n });\n },\n preview: function preview() {\n var imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var cropBoxWidth = cropBoxData.width,\n cropBoxHeight = cropBoxData.height;\n var width = imageData.width,\n height = imageData.height;\n var left = cropBoxData.left - canvasData.left - imageData.left;\n var top = cropBoxData.top - canvasData.top - imageData.top;\n\n if (!this.cropped || this.disabled) {\n return;\n }\n\n setStyle(this.viewBoxImage, assign({\n width: width,\n height: height\n }, getTransforms(assign({\n translateX: -left,\n translateY: -top\n }, imageData))));\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n\n if (cropBoxWidth) {\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\n }\n\n if (cropBoxHeight && newHeight > originalHeight) {\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\n }\n\n setStyle(element, {\n width: newWidth,\n height: newHeight\n });\n setStyle(element.getElementsByTagName('img')[0], assign({\n width: width * ratio,\n height: height * ratio\n }, getTransforms(assign({\n translateX: -left * ratio,\n translateY: -top * ratio\n }, imageData))));\n });\n }\n };\n\n var events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n addListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n addListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n addListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom);\n }\n\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n\n if (options.zoomable && options.zoomOnWheel) {\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n\n if (options.responsive) {\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n }\n },\n unbind: function unbind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n removeListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n removeListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n removeListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n removeListener(element, EVENT_ZOOM, options.zoom);\n }\n\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n }\n\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n\n if (options.responsive) {\n removeListener(window, EVENT_RESIZE, this.onResize);\n }\n }\n };\n\n var handlers = {\n resize: function resize() {\n if (this.disabled) {\n return;\n }\n\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n var ratioX = container.offsetWidth / containerData.width;\n var ratioY = container.offsetHeight / containerData.height;\n var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY; // Resize when width changed or height changed\n\n if (ratio !== 1) {\n var canvasData;\n var cropBoxData;\n\n if (options.restore) {\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\n }\n\n this.render();\n\n if (options.restore) {\n this.setCanvasData(forEach(canvasData, function (n, i) {\n canvasData[i] = n * ratio;\n }));\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n cropBoxData[i] = n * ratio;\n }));\n }\n }\n },\n dblclick: function dblclick() {\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n return;\n }\n\n this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n },\n wheel: function wheel(event) {\n var _this = this;\n\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n\n if (this.disabled) {\n return;\n }\n\n event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\n\n if (this.wheeling) {\n return;\n }\n\n this.wheeling = true;\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n\n this.zoom(-delta * ratio, event);\n },\n cropStart: function cropStart(event) {\n var buttons = event.buttons,\n button = event.button;\n\n if (this.disabled // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n || event.ctrlKey)) {\n return;\n }\n\n var options = this.options,\n pointers = this.pointers;\n var action;\n\n if (event.changedTouches) {\n // Handle touch event\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[event.pointerId || 0] = getPointer(event);\n }\n\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(event.target, DATA_ACTION);\n }\n\n if (!REGEXP_ACTIONS.test(action)) {\n return;\n }\n\n if (dispatchEvent(this.element, EVENT_CROP_START, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n } // This line is required for preventing page zooming in iOS browsers\n\n\n event.preventDefault();\n this.action = action;\n this.cropping = false;\n\n if (action === ACTION_CROP) {\n this.cropping = true;\n addClass(this.dragBox, CLASS_MODAL);\n }\n },\n cropMove: function cropMove(event) {\n var action = this.action;\n\n if (this.disabled || !action) {\n return;\n }\n\n var pointers = this.pointers;\n event.preventDefault();\n\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n // The first parameter should not be undefined (#432)\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n\n this.change(event);\n },\n cropEnd: function cropEnd(event) {\n if (this.disabled) {\n return;\n }\n\n var action = this.action,\n pointers = this.pointers;\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[event.pointerId || 0];\n }\n\n if (!action) {\n return;\n }\n\n event.preventDefault();\n\n if (!Object.keys(pointers).length) {\n this.action = '';\n }\n\n if (this.cropping) {\n this.cropping = false;\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n }\n\n dispatchEvent(this.element, EVENT_CROP_END, {\n originalEvent: event,\n action: action\n });\n }\n };\n\n var change = {\n change: function change(event) {\n var options = this.options,\n canvasData = this.canvasData,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData,\n pointers = this.pointers;\n var action = this.action;\n var aspectRatio = options.aspectRatio;\n var left = cropBoxData.left,\n top = cropBoxData.top,\n width = cropBoxData.width,\n height = cropBoxData.height;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = containerData.width;\n var maxHeight = containerData.height;\n var renderable = true;\n var offset; // Locking aspect ratio in \"free mode\" by holding shift key\n\n if (!aspectRatio && event.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n }\n\n var pointer = pointers[Object.keys(pointers)[0]];\n var range = {\n x: pointer.endX - pointer.startX,\n y: pointer.endY - pointer.startY\n };\n\n var check = function check(side) {\n switch (side) {\n case ACTION_EAST:\n if (right + range.x > maxWidth) {\n range.x = maxWidth - right;\n }\n\n break;\n\n case ACTION_WEST:\n if (left + range.x < minLeft) {\n range.x = minLeft - left;\n }\n\n break;\n\n case ACTION_NORTH:\n if (top + range.y < minTop) {\n range.y = minTop - top;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (bottom + range.y > maxHeight) {\n range.y = maxHeight - bottom;\n }\n\n break;\n }\n };\n\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n // Resize crop box\n\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n\n if (width < 0) {\n action = ACTION_WEST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n\n if (height < 0) {\n action = ACTION_SOUTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n\n if (width < 0) {\n action = ACTION_EAST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_SOUTH);\n height += range.y;\n\n if (height < 0) {\n action = ACTION_NORTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n } else {\n check(ACTION_NORTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += cropBoxData.width - width;\n } else {\n check(ACTION_NORTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n // Move canvas\n\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n // Zoom canvas\n\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), event);\n renderable = false;\n break;\n // Create crop box\n\n case ACTION_CROP:\n if (!range.x || !range.y) {\n renderable = false;\n break;\n }\n\n offset = getOffset(this.cropper);\n left = pointer.startX - offset.left;\n top = pointer.startY - offset.top;\n width = cropBoxData.minWidth;\n height = cropBoxData.minHeight;\n\n if (range.x > 0) {\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n } else if (range.x < 0) {\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n }\n\n if (range.y < 0) {\n top -= height;\n } // Show the crop box if is hidden\n\n\n if (!this.cropped) {\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.cropped = true;\n\n if (this.limited) {\n this.limitCropBox(true, true);\n }\n }\n\n break;\n }\n\n if (renderable) {\n cropBoxData.width = width;\n cropBoxData.height = height;\n cropBoxData.left = left;\n cropBoxData.top = top;\n this.action = action;\n this.renderCropBox();\n } // Override\n\n\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n };\n\n var methods = {\n // Show the crop box manually\n crop: function crop() {\n if (this.ready && !this.cropped && !this.disabled) {\n this.cropped = true;\n this.limitCropBox(true, true);\n\n if (this.options.modal) {\n addClass(this.dragBox, CLASS_MODAL);\n }\n\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.setCropBoxData(this.initialCropBoxData);\n }\n\n return this;\n },\n // Reset the image and crop box to their initial states\n reset: function reset() {\n if (this.ready && !this.disabled) {\n this.imageData = assign({}, this.initialImageData);\n this.canvasData = assign({}, this.initialCanvasData);\n this.cropBoxData = assign({}, this.initialCropBoxData);\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n\n return this;\n },\n // Clear the crop box\n clear: function clear() {\n if (this.cropped && !this.disabled) {\n assign(this.cropBoxData, {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n });\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true); // Render canvas after crop box rendered\n\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n\n return this;\n },\n\n /**\n * Replace the image's src and rebuild the cropper\n * @param {string} url - The new URL.\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n * @returns {Cropper} this\n */\n replace: function replace(url) {\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.disabled && url) {\n if (this.isImg) {\n this.element.src = url;\n }\n\n if (hasSameSize) {\n this.url = url;\n this.image.src = url;\n\n if (this.ready) {\n this.viewBoxImage.src = url;\n forEach(this.previews, function (element) {\n element.getElementsByTagName('img')[0].src = url;\n });\n }\n } else {\n if (this.isImg) {\n this.replaced = true;\n }\n\n this.options.data = null;\n this.uncreate();\n this.load(url);\n }\n }\n\n return this;\n },\n // Enable (unfreeze) the cropper\n enable: function enable() {\n if (this.ready && this.disabled) {\n this.disabled = false;\n removeClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n // Disable (freeze) the cropper\n disable: function disable() {\n if (this.ready && !this.disabled) {\n this.disabled = true;\n addClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n\n /**\n * Destroy the cropper and remove the instance from the image\n * @returns {Cropper} this\n */\n destroy: function destroy() {\n var element = this.element;\n\n if (!element[NAMESPACE]) {\n return this;\n }\n\n element[NAMESPACE] = undefined;\n\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n\n this.uncreate();\n return this;\n },\n\n /**\n * Move the canvas with relative offsets\n * @param {number} offsetX - The relative offset distance on the x-axis.\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n * @returns {Cropper} this\n */\n move: function move(offsetX) {\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n var _this$canvasData = this.canvasData,\n left = _this$canvasData.left,\n top = _this$canvasData.top;\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\n\n /**\n * Move the canvas to an absolute point\n * @param {number} x - The x-axis coordinate.\n * @param {number} [y=x] - The y-axis coordinate.\n * @returns {Cropper} this\n */\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var canvasData = this.canvasData;\n var changed = false;\n x = Number(x);\n y = Number(y);\n\n if (this.ready && !this.disabled && this.options.movable) {\n if (isNumber(x)) {\n canvasData.left = x;\n changed = true;\n }\n\n if (isNumber(y)) {\n canvasData.top = y;\n changed = true;\n }\n\n if (changed) {\n this.renderCanvas(true);\n }\n }\n\n return this;\n },\n\n /**\n * Zoom the canvas with a relative ratio\n * @param {number} ratio - The target ratio.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoom: function zoom(ratio, _originalEvent) {\n var canvasData = this.canvasData;\n ratio = Number(ratio);\n\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n },\n\n /**\n * Zoom the canvas to an absolute ratio\n * @param {number} ratio - The target ratio.\n * @param {Object} pivot - The zoom pivot point coordinate.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n var options = this.options,\n canvasData = this.canvasData;\n var width = canvasData.width,\n height = canvasData.height,\n naturalWidth = canvasData.naturalWidth,\n naturalHeight = canvasData.naturalHeight;\n ratio = Number(ratio);\n\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n\n if (dispatchEvent(this.element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: width / naturalWidth,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n\n if (_originalEvent) {\n var pointers = this.pointers;\n var offset = getOffset(this.cropper);\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n }; // Zoom from the triggering point of the event\n\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n } else {\n // Zoom from the center of the canvas\n canvasData.left -= (newWidth - width) / 2;\n canvasData.top -= (newHeight - height) / 2;\n }\n\n canvasData.width = newWidth;\n canvasData.height = newHeight;\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Rotate the canvas with a relative degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotate: function rotate(degree) {\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n },\n\n /**\n * Rotate the canvas to an absolute degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotateTo: function rotateTo(degree) {\n degree = Number(degree);\n\n if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n this.imageData.rotate = degree % 360;\n this.renderCanvas(true, true);\n }\n\n return this;\n },\n\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Cropper} this\n */\n scaleX: function scaleX(_scaleX) {\n var scaleY = this.imageData.scaleY;\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\n\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scaleY: function scaleY(_scaleY) {\n var scaleX = this.imageData.scaleX;\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\n\n /**\n * Scale the image\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var imageData = this.imageData;\n var transformed = false;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n\n if (this.ready && !this.disabled && this.options.scalable) {\n if (isNumber(scaleX)) {\n imageData.scaleX = scaleX;\n transformed = true;\n }\n\n if (isNumber(scaleY)) {\n imageData.scaleY = scaleY;\n transformed = true;\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n }\n\n return this;\n },\n\n /**\n * Get the cropped area position and size data (base on the original image)\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n * @returns {Object} The result cropped data.\n */\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n x: cropBoxData.left - canvasData.left,\n y: cropBoxData.top - canvasData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n var ratio = imageData.width / imageData.naturalWidth;\n forEach(data, function (n, i) {\n data[i] = n / ratio;\n });\n\n if (rounded) {\n // In case rounding off leads to extra 1px in right or bottom border\n // we should round the top-left corner and the dimension (#343).\n var bottom = Math.round(data.y + data.height);\n var right = Math.round(data.x + data.width);\n data.x = Math.round(data.x);\n data.y = Math.round(data.y);\n data.width = right - data.x;\n data.height = bottom - data.y;\n }\n } else {\n data = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n if (options.rotatable) {\n data.rotate = imageData.rotate || 0;\n }\n\n if (options.scalable) {\n data.scaleX = imageData.scaleX || 1;\n data.scaleY = imageData.scaleY || 1;\n }\n\n return data;\n },\n\n /**\n * Set the cropped area position and size with new data\n * @param {Object} data - The new data.\n * @returns {Cropper} this\n */\n setData: function setData(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n var cropBoxData = {};\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n var transformed = false;\n\n if (options.rotatable) {\n if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n imageData.rotate = data.rotate;\n transformed = true;\n }\n }\n\n if (options.scalable) {\n if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n imageData.scaleX = data.scaleX;\n transformed = true;\n }\n\n if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n imageData.scaleY = data.scaleY;\n transformed = true;\n }\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n\n var ratio = imageData.width / imageData.naturalWidth;\n\n if (isNumber(data.x)) {\n cropBoxData.left = data.x * ratio + canvasData.left;\n }\n\n if (isNumber(data.y)) {\n cropBoxData.top = data.y * ratio + canvasData.top;\n }\n\n if (isNumber(data.width)) {\n cropBoxData.width = data.width * ratio;\n }\n\n if (isNumber(data.height)) {\n cropBoxData.height = data.height * ratio;\n }\n\n this.setCropBoxData(cropBoxData);\n }\n\n return this;\n },\n\n /**\n * Get the container size data.\n * @returns {Object} The result container data.\n */\n getContainerData: function getContainerData() {\n return this.ready ? assign({}, this.containerData) : {};\n },\n\n /**\n * Get the image position and size data.\n * @returns {Object} The result image data.\n */\n getImageData: function getImageData() {\n return this.sized ? assign({}, this.imageData) : {};\n },\n\n /**\n * Get the canvas position and size data.\n * @returns {Object} The result canvas data.\n */\n getCanvasData: function getCanvasData() {\n var canvasData = this.canvasData;\n var data = {};\n\n if (this.ready) {\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n data[n] = canvasData[n];\n });\n }\n\n return data;\n },\n\n /**\n * Set the canvas position and size with new data.\n * @param {Object} data - The new canvas data.\n * @returns {Cropper} this\n */\n setCanvasData: function setCanvasData(data) {\n var canvasData = this.canvasData;\n var aspectRatio = canvasData.aspectRatio;\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n canvasData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n canvasData.top = data.top;\n }\n\n if (isNumber(data.width)) {\n canvasData.width = data.width;\n canvasData.height = data.width / aspectRatio;\n } else if (isNumber(data.height)) {\n canvasData.height = data.height;\n canvasData.width = data.height * aspectRatio;\n }\n\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Get the crop box position and size data.\n * @returns {Object} The result crop box data.\n */\n getCropBoxData: function getCropBoxData() {\n var cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n left: cropBoxData.left,\n top: cropBoxData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n }\n\n return data || {};\n },\n\n /**\n * Set the crop box position and size with new data.\n * @param {Object} data - The new crop box data.\n * @returns {Cropper} this\n */\n setCropBoxData: function setCropBoxData(data) {\n var cropBoxData = this.cropBoxData;\n var aspectRatio = this.options.aspectRatio;\n var widthChanged;\n var heightChanged;\n\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n cropBoxData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n cropBoxData.top = data.top;\n }\n\n if (isNumber(data.width) && data.width !== cropBoxData.width) {\n widthChanged = true;\n cropBoxData.width = data.width;\n }\n\n if (isNumber(data.height) && data.height !== cropBoxData.height) {\n heightChanged = true;\n cropBoxData.height = data.height;\n }\n\n if (aspectRatio) {\n if (widthChanged) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else if (heightChanged) {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.renderCropBox();\n }\n\n return this;\n },\n\n /**\n * Get a canvas drawn the cropped image.\n * @param {Object} [options={}] - The config options.\n * @returns {HTMLCanvasElement} - The result canvas.\n */\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!this.ready || !window.HTMLCanvasElement) {\n return null;\n }\n\n var canvasData = this.canvasData;\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\n\n if (!this.cropped) {\n return source;\n }\n\n var _this$getData = this.getData(),\n initialX = _this$getData.x,\n initialY = _this$getData.y,\n initialWidth = _this$getData.width,\n initialHeight = _this$getData.height;\n\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\n\n if (ratio !== 1) {\n initialX *= ratio;\n initialY *= ratio;\n initialWidth *= ratio;\n initialHeight *= ratio;\n }\n\n var aspectRatio = initialWidth / initialHeight;\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.maxWidth || Infinity,\n height: options.maxHeight || Infinity\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.minWidth || 0,\n height: options.minHeight || 0\n }, 'cover');\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\n }),\n width = _getAdjustedSizes.width,\n height = _getAdjustedSizes.height;\n\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n\n\n var sourceWidth = source.width;\n var sourceHeight = source.height; // Source canvas parameters\n\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth;\n var srcHeight; // Destination canvas parameters\n\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n\n if (srcX <= -initialWidth || srcX > sourceWidth) {\n srcX = 0;\n srcWidth = 0;\n dstX = 0;\n dstWidth = 0;\n } else if (srcX <= 0) {\n dstX = -srcX;\n srcX = 0;\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n dstWidth = srcWidth;\n } else if (srcX <= sourceWidth) {\n dstX = 0;\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n dstWidth = srcWidth;\n }\n\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n srcY = 0;\n srcHeight = 0;\n dstY = 0;\n dstHeight = 0;\n } else if (srcY <= 0) {\n dstY = -srcY;\n srcY = 0;\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n dstHeight = srcHeight;\n } else if (srcY <= sourceHeight) {\n dstY = 0;\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n dstHeight = srcHeight;\n }\n\n var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\n\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n } // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n\n\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n return canvas;\n },\n\n /**\n * Change the aspect ratio of the crop box.\n * @param {number} aspectRatio - The new aspect ratio.\n * @returns {Cropper} this\n */\n setAspectRatio: function setAspectRatio(aspectRatio) {\n var options = this.options;\n\n if (!this.disabled && !isUndefined(aspectRatio)) {\n // 0 -> NaN\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n\n if (this.ready) {\n this.initCropBox();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n }\n\n return this;\n },\n\n /**\n * Change the drag mode.\n * @param {string} mode - The new drag mode.\n * @returns {Cropper} this\n */\n setDragMode: function setDragMode(mode) {\n var options = this.options,\n dragBox = this.dragBox,\n face = this.face;\n\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n options.dragMode = mode;\n setData(dragBox, DATA_ACTION, mode);\n toggleClass(dragBox, CLASS_CROP, croppable);\n toggleClass(dragBox, CLASS_MOVE, movable);\n\n if (!options.cropBoxMovable) {\n // Sync drag mode to crop box when it is not movable\n setData(face, DATA_ACTION, mode);\n toggleClass(face, CLASS_CROP, croppable);\n toggleClass(face, CLASS_MOVE, movable);\n }\n }\n\n return this;\n }\n };\n\n var AnotherCropper = WINDOW.Cropper;\n\n var Cropper = /*#__PURE__*/function () {\n /**\n * Create a new Cropper.\n * @param {Element} element - The target element for cropping.\n * @param {Object} [options={}] - The configuration options.\n */\n function Cropper(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Cropper);\n\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n throw new Error('The first argument is required and must be an or element.');\n }\n\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.cropped = false;\n this.disabled = false;\n this.pointers = {};\n this.ready = false;\n this.reloading = false;\n this.replaced = false;\n this.sized = false;\n this.sizing = false;\n this.init();\n }\n\n _createClass(Cropper, [{\n key: \"init\",\n value: function init() {\n var element = this.element;\n var tagName = element.tagName.toLowerCase();\n var url;\n\n if (element[NAMESPACE]) {\n return;\n }\n\n element[NAMESPACE] = this;\n\n if (tagName === 'img') {\n this.isImg = true; // e.g.: \"img/picture.jpg\"\n\n url = element.getAttribute('src') || '';\n this.originalUrl = url; // Stop when it's a blank image\n\n if (!url) {\n return;\n } // e.g.: \"https://example.com/img/picture.jpg\"\n\n\n url = element.src;\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n url = element.toDataURL();\n }\n\n this.load(url);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this = this;\n\n if (!url) {\n return;\n }\n\n this.url = url;\n this.imageData = {};\n var element = this.element,\n options = this.options;\n\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n } // Only IE10+ supports Typed Arrays\n\n\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n } // Detect the mime type of the image directly if it is a Data URL\n\n\n if (REGEXP_DATA_URL.test(url)) {\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n // Only a JPEG image may contains Exif Orientation information,\n // the rest types of Data URLs are not necessary to check orientation at all.\n this.clone();\n }\n\n return;\n } // 1. Detect the mime type of the image by a XMLHttpRequest.\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n\n\n var xhr = new XMLHttpRequest();\n var clone = this.clone.bind(this);\n this.reloading = true;\n this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\n // http, https, data, chrome, chrome-extension.\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n // in some browsers as IE11 and Safari.\n\n xhr.onabort = clone;\n xhr.onerror = clone;\n xhr.ontimeout = clone;\n\n xhr.onprogress = function () {\n // Abort the request directly if it not a JPEG image for better performance\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n xhr.abort();\n }\n };\n\n xhr.onload = function () {\n _this.read(xhr.response);\n };\n\n xhr.onloadend = function () {\n _this.reloading = false;\n _this.xhr = null;\n }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n\n\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n url = addTimestamp(url);\n } // The third parameter is required for avoiding side-effect (#682)\n\n\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\n xhr.send();\n }\n }, {\n key: \"read\",\n value: function read(arrayBuffer) {\n var options = this.options,\n imageData = this.imageData; // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n\n var orientation = resetAndGetOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n if (orientation > 1) {\n // Generate a new URL which has the default orientation value\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n\n var _parseOrientation = parseOrientation(orientation);\n\n rotate = _parseOrientation.rotate;\n scaleX = _parseOrientation.scaleX;\n scaleY = _parseOrientation.scaleY;\n }\n\n if (options.rotatable) {\n imageData.rotate = rotate;\n }\n\n if (options.scalable) {\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n }\n\n this.clone();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var element = this.element,\n url = this.url;\n var crossOrigin = element.crossOrigin;\n var crossOriginUrl = url;\n\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n if (!crossOrigin) {\n crossOrigin = 'anonymous';\n } // Bust cache when there is not a \"crossOrigin\" property (#519)\n\n\n crossOriginUrl = addTimestamp(url);\n }\n\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = crossOriginUrl || url;\n image.alt = element.alt || 'The image to crop';\n this.image = image;\n image.onload = this.start.bind(this);\n image.onerror = this.stop.bind(this);\n addClass(image, CLASS_HIDE);\n element.parentNode.insertBefore(image, element.nextSibling);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.initialImageData = assign({}, _this2.imageData);\n _this2.sizing = false;\n _this2.sized = true;\n\n _this2.build();\n }; // Most modern browsers (excepts iOS WebKit)\n\n\n if (image.naturalWidth && !isIOSWebKit) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n this.sizingImage = sizingImage;\n\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n\n if (!isIOSWebKit) {\n body.removeChild(sizingImage);\n }\n };\n\n sizingImage.src = image.src; // iOS WebKit will convert the image automatically\n // with its orientation once append it into DOM (#279)\n\n if (!isIOSWebKit) {\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(sizingImage);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }, {\n key: \"build\",\n value: function build() {\n if (!this.sized || this.ready) {\n return;\n }\n\n var element = this.element,\n options = this.options,\n image = this.image; // Create cropper elements\n\n var container = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n this.container = container;\n this.cropper = cropper;\n this.canvas = canvas;\n this.dragBox = dragBox;\n this.cropBox = cropBox;\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n this.face = face;\n canvas.appendChild(image); // Hide the original image\n\n addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\n\n container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\n\n if (!this.isImg) {\n removeClass(image, CLASS_HIDE);\n }\n\n this.initPreview();\n this.bind();\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n addClass(cropBox, CLASS_HIDDEN);\n\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n }\n\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n }\n\n if (options.background) {\n addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n }\n\n if (!options.highlight) {\n addClass(face, CLASS_INVISIBLE);\n }\n\n if (options.cropBoxMovable) {\n addClass(face, CLASS_MOVE);\n setData(face, DATA_ACTION, ACTION_ALL);\n }\n\n if (!options.cropBoxResizable) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n }\n\n this.render();\n this.ready = true;\n this.setDragMode(options.dragMode);\n\n if (options.autoCrop) {\n this.crop();\n }\n\n this.setData(options.data);\n\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_READY);\n }\n }, {\n key: \"unbuild\",\n value: function unbuild() {\n if (!this.ready) {\n return;\n }\n\n this.ready = false;\n this.unbind();\n this.resetPreview();\n this.cropper.parentNode.removeChild(this.cropper);\n removeClass(this.element, CLASS_HIDDEN);\n }\n }, {\n key: \"uncreate\",\n value: function uncreate() {\n if (this.ready) {\n this.unbuild();\n this.ready = false;\n this.cropped = false;\n } else if (this.sizing) {\n this.sizingImage.onload = null;\n this.sizing = false;\n this.sized = false;\n } else if (this.reloading) {\n this.xhr.onabort = null;\n this.xhr.abort();\n } else if (this.image) {\n this.stop();\n }\n }\n /**\n * Get the no conflict cropper class.\n * @returns {Cropper} The cropper class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Cropper = AnotherCropper;\n return Cropper;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n\n return Cropper;\n }();\n\n assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n return Cropper;\n\n})));\n"],"sourceRoot":""}