{"version":3,"sources":["webpack:///./src/views/edit/article/home/index.vue?64f7","webpack:///./src/components/base/crop-image.vue?d48b","webpack:///src/components/base/crop-image.vue","webpack:///./src/components/base/crop-image.vue?cd4a","webpack:///./src/components/base/crop-image.vue","webpack:///src/views/edit/article/home/index.vue","webpack:///./src/views/edit/article/home/index.vue?8e90","webpack:///./src/views/edit/article/home/index.vue","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/ieee754.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./src/views/edit/service.js","webpack:///./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///./src/components/base/crop-image.vue?cd02","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/internals/array-buffer-native.js","webpack:///./src/views/edit/article/home/index.vue?4290","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/cropperjs/dist/cropper.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","ref","attrs","form","rule","model","value","callback","$$v","$set","expression","_l","item","key","id","name","on","changeEditor","_s","editor","staticStyle","getFile","chooseImg","deleDisabled","handleDelete","_e","coverImage1","coverImage2","uploadImg","content","loading","comfirm","dialogVisible","$event","img","handelComfire","handelCancel","getSize","staticRenderFns","directives","rawName","class","blue","active","changeScale","goodImg","_m","topicImg","component","toInteger","toLength","module","exports","it","undefined","number","length","RangeError","toObject","toAbsoluteIndex","min","Math","copyWithin","target","start","O","len","to","from","end","arguments","count","inc","ArrayBufferViewCore","speciesConstructor","aTypedArray","exportTypedArrayMethod","begin","beginIndex","constructor","buffer","byteOffset","BYTES_PER_ELEMENT","toPositiveInteger","BYTES","offset","$sort","sort","comparefn","call","$reduceRight","right","callbackfn","fails","aTypedArrayConstructor","$slice","slice","FORCED","Int8Array","list","C","index","result","$lastIndexOf","searchElement","apply","$findIndex","findIndex","predicate","toOffset","set","arrayLike","src","$map","map","mapfn","createTypedArrayConstructor","init","data","$join","join","separator","global","ArrayIterators","wellKnownSymbol","ITERATOR","Uint8Array","arrayValues","values","arrayKeys","keys","arrayEntries","entries","nativeTypedArrayIterator","prototype","CORRECT_ITER_NAME","typedArrayValues","DESCRIPTORS","NATIVE_ARRAY_BUFFER","createNonEnumerableProperty","redefineAll","anInstance","toIndex","IEEE754","getPrototypeOf","setPrototypeOf","getOwnPropertyNames","f","defineProperty","arrayFill","setToStringTag","InternalStateModule","getInternalState","get","setInternalState","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_LENGTH","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","ObjectPrototype","Object","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","Constructor","view","isLittleEndian","intIndex","store","byteLength","bytes","reverse","conversion","i","NaN","ArrayBufferPrototype","j","testView","nativeSetInt8","setInt8","getInt8","setUint8","unsafe","Array","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","ArrayBuffer","DataView","$some","some","Uint8ArrayPrototype","arrayToString","toString","arrayJoin","IS_NOT_ARRAY_METHOD","$fill","$","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferModule","createPropertyDescriptor","toPrimitive","has","classof","isObject","create","typedArrayFrom","forEach","setSpecies","definePropertyModule","getOwnPropertyDescriptorModule","inheritIfRequired","nativeDefineProperty","nativeGetOwnPropertyDescriptor","round","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG","TypedArray","TypedArrayPrototype","isTypedArray","fromList","isArrayBuffer","klass","isTypedArrayIndex","String","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","descriptor","configurable","writable","enumerable","stat","forced","getOwnPropertyDescriptor","TYPE","wrapper","CLAMPED","match","CONSTRUCTOR_NAME","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructor","TypedArrayConstructorPrototype","exported","getter","that","setter","addElement","dummy","typedArrayOffset","$length","$len","sham","Infinity","abs","pow","floor","log","LN2","mantissaLength","exponent","mantissa","c","exponentLength","eMax","eBias","rt","sign","nBits","argumentsLength","endPos","$includes","includes","queryTags","axios","res","records","addTopic","params","post","queryDetail","tags","editTopic","editCoverimage","checkCorrectnessOfIteration","iterable","$copyWithin","getIteratorMethod","isArrayIteratorMethod","bind","source","step","iterator","next","mapping","iteratorMethod","done","push","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","ES3_STRINGS","STRICT_METHOD","proto","$every","every","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","factory","_typeof","obj","Symbol","_classCallCheck","instance","TypeError","_defineProperties","props","_createClass","protoProps","staticProps","_defineProperty","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","isArray","_arrayLikeToArray","iter","o","minLen","n","test","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","concat","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","viewMode","dragMode","initialAspectRatio","aspectRatio","preview","responsive","restore","checkCrossOrigin","checkOrientation","modal","guides","center","highlight","background","autoCrop","autoCropArea","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","wheelZoomRatio","cropBoxMovable","cropBoxResizable","toggleDragModeOnDblclick","minCanvasWidth","minCanvasHeight","minCropBoxWidth","minCropBoxHeight","minContainerWidth","minContainerHeight","ready","cropstart","cropmove","cropend","crop","zoom","TEMPLATE","isNaN","Number","isNumber","isPositiveNumber","isUndefined","hasOwnProperty","isPlainObject","_constructor","error","isFunction","toArray","assign","_len","args","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","REGEXP_SUFFIX","setStyle","element","styles","style","property","hasClass","classList","contains","className","indexOf","addClass","elem","add","trim","removeClass","remove","replace","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","toLowerCase","getData","dataset","getAttribute","setData","setAttribute","removeData","removeAttribute","REGEXP_SPACES","onceSupported","supported","once","listener","options","addEventListener","removeEventListener","removeListener","type","handler","split","event","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","url","parts","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","_ref","rotate","scaleX","scaleY","translateX","translateY","transform","WebkitTransform","msTransform","getMaxZoomRatio","pointers","pointers2","maxRatio","pointer","pointerId","pointer2","x1","startX","y1","startY","x2","endX","y2","endY","z1","sqrt","z2","ratio","getPointer","_ref2","endOnly","pageX","pageY","getPointersCenter","_ref3","getAdjustedSizes","_ref4","height","width","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","_ref5","degree","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","maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","createElement","context","getContext","maxSizes","minSizes","max","destMaxSizes","destMinSizes","destWidth","destHeight","fillStyle","fillRect","save","translate","scale","drawImage","param","fromCharCode","getStringFromCharCode","dataView","str","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","atob","arrayBuffer","uint8","charCodeAt","arrayBufferToDataURL","mimeType","chunks","chunkSize","subarray","btoa","resetAndGetOrientation","orientation","littleEndian","app1Start","ifdStart","exifIDCode","tiffOffset","endianness","firstIFDOffset","_offset","_length","parseOrientation","initContainer","initCanvas","initCropBox","renderCanvas","cropped","renderCropBox","container","cropper","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","alt","viewBox","appendChild","viewBoxImage","previews","ownerDocument","querySelectorAll","querySelector","el","html","innerHTML","cssText","resetPreview","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","getElementsByTagName","events","onCropStart","cropStart","onWheel","wheel","passive","capture","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","getCanvasData","getCropBoxData","setCanvasData","setCropBoxData","setDragMode","dragBox","_this","delta","preventDefault","wheeling","setTimeout","deltaY","wheelDelta","buttons","button","pointerType","ctrlKey","action","changedTouches","touch","identifier","originalEvent","cropping","change","bottom","renderable","shiftKey","range","x","y","check","side","move","p","methods","reset","initialImageData","clear","hasSameSize","isImg","replaced","uncreate","load","enable","disable","destroy","originalUrl","offsetX","offsetY","_this$canvasData","moveTo","_originalEvent","zoomTo","pivot","oldRatio","rotateTo","_scaleX","_scaleY","rounded","getContainerData","getImageData","sized","widthChanged","heightChanged","getCroppedCanvas","HTMLCanvasElement","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","sourceWidth","sourceHeight","srcX","srcY","setAspectRatio","mode","croppable","AnotherCropper","Cropper","tagName","Error","reloading","sizing","toDataURL","read","clone","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","getResponseHeader","abort","onload","response","onloadend","open","responseType","withCredentials","send","_parseOrientation","stop","parentNode","insertBefore","nextSibling","_this2","isIOSWebKit","navigator","userAgent","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild","$filter","$reduce","middle","$find","find","aFunction","createMethod","IS_RIGHT","memo","self","$forEach","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","nativeLastIndexOf","lastIndexOf","NEGATIVE_ZERO","ACCESSORS","1","$indexOf","NAME","redefine","uid","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","isPrototypeOf","TO_STRING_TAG","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isView","ARRAY","KEY","exportTypedArrayStaticMethod","Function"],"mappings":"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","file":"js/chunk-5aa61a47.06cebc5f.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"edit-issue\"},[_c('header',{staticClass:\"edit-issue__header\"}),_c('div',{staticClass:\"edit-issue__title\"},[_vm._v(\"创建新文章\")]),_c('div',{staticClass:\"edit-issue__card\"},[_c('isc-form',{ref:\"form\",attrs:{\"model\":_vm.form,\"rules\":_vm.rule,\"label-width\":\"80px\",\"label-position\":\"left\"}},[_c('isc-form-item',{attrs:{\"label\":\"标题:\",\"prop\":\"title\",\"required\":\"\"}},[_c('isc-input',{attrs:{\"maxlength\":50,\"placeholder\":\"标题字数为50个以内\"},model:{value:(_vm.form.title),callback:function ($$v) {_vm.$set(_vm.form, \"title\", $$v)},expression:\"form.title\"}})],1),_c('isc-form-item',{attrs:{\"label\":\"标签:\",\"prop\":\"tags\",\"required\":\"\"}},[_c('isc-select',{attrs:{\"multiple\":\"\",\"placeholder\":\"请选择\"},model:{value:(_vm.form.tags),callback:function ($$v) {_vm.$set(_vm.form, \"tags\", $$v)},expression:\"form.tags\"}},_vm._l((_vm.tagList),function(item){return _c('isc-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item.id}})}),1)],1),_c('isc-form-item',{attrs:{\"label\":\"分类:\"}},[_c('isc-select',{attrs:{\"placeholder\":\"请选择\"},model:{value:(_vm.form.subcat),callback:function ($$v) {_vm.$set(_vm.form, \"subcat\", $$v)},expression:\"form.subcat\"}},_vm._l((_vm.subcatList),function(item){return _c('isc-option',{key:item.id,attrs:{\"label\":item.name,\"value\":item.id}})}),1),_c('span',{staticClass:\"change\",on:{\"click\":_vm.changeEditor}},[_vm._v(_vm._s(_vm.editor ? '切换markdown编辑器' : '切换富文本编辑器'))])],1),_c('isc-form-item',{staticClass:\"uploadImg\",attrs:{\"label\":\"封面:\"}},[_c('div',{staticClass:\"uploadImg__btn\"},[_c('input',{ref:\"input\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":_vm.getFile}}),_c('isc-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.chooseImg}},[_vm._v(\"上传封面\")]),_c('isc-button',{attrs:{\"plain\":\"\",\"disabled\":_vm.deleDisabled},on:{\"click\":_vm.handleDelete}},[_vm._v(\"删除封面\")])],1),(!_vm.deleDisabled)?_c('div',{staticClass:\"uploadImg__img\"},[_c('img',{attrs:{\"src\":_vm.form.coverImage1}}),_c('img',{attrs:{\"src\":_vm.form.coverImage2}})]):_vm._e(),_c('div',{staticClass:\"uploadImg__des\"},[_vm._v(\" 普通文章不显示封面;文章置顶/加精后会显示封面,如未上传,将采用默认封面 \")])])],1),_c('md-editor',{attrs:{\"upload\":_vm.uploadImg,\"height\":\"360px\",\"is-html\":_vm.editor,\"hide-mode-switch\":\"\"},model:{value:(_vm.content),callback:function ($$v) {_vm.content=$$v},expression:\"content\"}}),_c('div',{staticClass:\"edit-issue__card__bottom\"},[_c('isc-button',{staticClass:\"btn blue\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\",\"size\":\"large\"},on:{\"click\":_vm.comfirm}},[_vm._v(\" 发布 \")])],1)],1),_c('isc-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"width\":\"840px\",\"close-on-click-modal\":false},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('crop-image',{attrs:{\"img\":_vm.img},on:{\"handel-comfire\":_vm.handelComfire,\"handel-cancel\":_vm.handelCancel,\"getsize\":_vm.getSize}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"crop-img\"},[_c('span',{staticClass:\"crop-img__left\"},[_c('div',{staticClass:\"crop-img__left__title\"},[_vm._v(\"裁剪封面\")]),_c('div',{staticClass:\"crop-img__left__img\"},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],ref:\"imgref\",attrs:{\"src\":_vm.img}})]),_c('div',{staticClass:\"crop-img__left__btn\"},[_c('span',{staticClass:\"btn\",class:{ blue: _vm.active },on:{\"click\":function($event){return _vm.changeScale('2.45')}}},[_vm._v(\"2.45:1\")]),_c('span',{staticClass:\"btn\",class:{ blue: !_vm.active },on:{\"click\":function($event){return _vm.changeScale('1.26')}}},[_vm._v(\"1.26:1\")])])]),_c('span',{staticClass:\"crop-img__right\"},[_c('div',{staticClass:\"crop-img__right__title\"},[_vm._v(\"预览封面\")]),_c('div',{staticClass:\"crop-img__right__good\"},[_c('img',{ref:\"goodImg\",attrs:{\"src\":_vm.goodImg || _vm.img}}),_vm._m(0)]),_c('div',{staticClass:\"crop-img__right__topic\"},[_c('img',{ref:\"topicImg\",attrs:{\"src\":_vm.topicImg || _vm.img}}),_vm._m(1)])]),_c('div',{staticClass:\"crop-img__footer\"},[_c('isc-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.loading},on:{\"click\":_vm.handelComfire}},[_vm._v(\"确 认\")]),_c('isc-button',{attrs:{\"plain\":\"\"},on:{\"click\":_vm.handelCancel}},[_vm._v(\"取 消\")])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('div',{staticClass:\"top\"},[_vm._v(\"封面(2.45:1)\")]),_c('div',[_vm._v(\"你的文章在被管理员加精后,会被推送至首页,将看到此封面\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('div',{staticClass:\"top\"},[_vm._v(\"封面(1.26:1)\")]),_c('div',[_vm._v(\"你的文章在被管理员置顶后,会在文章栏目置顶,将看到此封面\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crop-image.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crop-image.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./crop-image.vue?vue&type=template&id=3bc5870e&scoped=true&\"\nimport script from \"./crop-image.vue?vue&type=script&lang=js&\"\nexport * from \"./crop-image.vue?vue&type=script&lang=js&\"\nimport style0 from \"./crop-image.vue?vue&type=style&index=0&id=3bc5870e&lang=scss&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 \"3bc5870e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2b338972&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2b338972&lang=scss&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 \"2b338972\",\n null\n \n)\n\nexport default component.exports","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","// IEEE754 conversions based on https://github.com/feross/ieee754\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\n\nimport axios from '../../utils/axios';\n\n//标签\n\nexport const queryTags = async () => {\n const res = await axios.get(`/api/opencms/tags?current=1&size=1000000`);\n return res.records;\n};\n\n//创建话题\n\nexport const addTopic = async (params) => {\n const res = await axios.post(`/api/opencms/topic/create`, params);\n return res;\n};\n\nexport const refreshToken = async () => {\n const res = await axios.get(`/api/opencms/user/refreshToken`);\n return res.records;\n};\n\nexport const queryDetail = async (id) => {\n const res = await axios.get(`/api/opencms/topic/${id}`);\n res.tags = res.tags.map((item) => {\n return item.id;\n });\n return res;\n};\n\nexport const editTopic = async (params) => {\n const res = await axios.post(`/api/opencms/topic/update/${params.id}`, params);\n return res;\n};\n\nexport const editCoverimage = async (id, params) => {\n const res = await axios.post(`/api/opencms/topic/update-cover-image/${id}`, params);\n return res;\n};\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./crop-image.vue?vue&type=style&index=0&id=3bc5870e&lang=scss&scoped=true&\"","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=2b338972&lang=scss&scoped=true&\"","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","/*!\n * Cropper.js v1.5.9\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-10T13:16:26.743Z\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 _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 ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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 _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\" && Symbol.iterator in Object(iter)) 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 ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed\n\n if (ratio !== 1 || container.offsetHeight !== containerData.height) {\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 }\n\n xhr.open('GET', url);\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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n"],"sourceRoot":""}