{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./src/editor/components/H5BookCropImage.vue?5e48","webpack:///./src/editor/components/H5BookCropImage.vue?0b19","webpack:///./node_modules/cropperjs/dist/cropper.esm.js","webpack:///src/editor/components/H5BookCropImage.vue","webpack:///./src/editor/components/H5BookCropImage.vue?6230","webpack:///./src/editor/components/H5BookCropImage.vue","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js"],"names":["toInteger","__webpack_require__","toLength","module","exports","it","undefined","number","length","RangeError","Typed","global","hide","uid","TYPED","VIEW","ABV","ArrayBuffer","DataView","CONSTR","i","l","TypedArrayConstructors","split","prototype","init","data","byteOffset","this","toObject","toAbsoluteIndex","value","O","aLen","arguments","index","end","endPos","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_H5BookCropImage_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_H5BookCropImage_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","n","render","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","src","url","type","on","click","$event","preventDefault","editSave","_v","staticRenderFns","IN_BROWSER","window","WINDOW","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_POINTER_DOWN","PointerEvent","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_READY","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","DEFAULTS","viewMode","dragMode","initialAspectRatio","NaN","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","_typeof","Symbol","iterator","obj","constructor","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","toConsumableArray","arr","Array","isArray","arr2","from","cropper_esm_isNaN","Number","isNaN","isNumber","isUndefined","isObject","cropper_esm_hasOwnProperty","hasOwnProperty","isPlainObject","_constructor","call","e","isFunction","forEach","callback","keys","cropper_esm_assign","assign","_len","args","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","test","Math","round","REGEXP_SUFFIX","setStyle","element","styles","style","property","hasClass","classList","contains","className","indexOf","addClass","elem","add","trim","removeClass","remove","replace","toggleClass","added","REGEXP_HYPHENATE","hyphenate","toLowerCase","getData","name","dataset","getAttribute","setData","setAttribute","removeData","removeAttribute","REGEXP_SPACES","onceSupported","supported","once","listener","options","get","set","addEventListener","removeEventListener","removeListener","handler","event","listeners","addListener","_handler","_element$listeners","_len2","_key2","apply","dispatchEvent","Event","CustomEvent","detail","bubbles","cancelable","document","createEvent","initCustomEvent","getOffset","box","getBoundingClientRect","left","pageXOffset","documentElement","clientLeft","top","pageYOffset","clientTop","cropper_esm_location","location","REGEXP_ORIGINS","isCrossOriginURL","parts","match","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","_ref","rotate","scaleX","scaleY","translateX","translateY","values","push","transform","join","WebkitTransform","msTransform","getMaxZoomRatio","pointers","pointers2","ratios","pointer","pointerId","pointer2","x1","abs","startX","y1","startY","x2","endX","y2","endY","z1","sqrt","z2","ratio","sort","a","b","getPointer","_ref2","endOnly","pageX","pageY","getPointersCenter","count","_ref3","cropper_esm_isFinite","isFinite","getAdjustedSizes","_ref4","height","width","isValidNumber","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","Infinity","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","createElement","context","getContext","maxSizes","minSizes","min","max","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","save","translate","scale","drawImage","concat","map","param","floor","fromCharCode","String","getStringFromCharCode","dataView","start","str","getUint8","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","atob","arrayBuffer","uint8","Uint8Array","charCodeAt","arrayBufferToDataURL","mimeType","btoa","getOrientation","orientation","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","_length","_offset","setUint16","parseOrientation","cropper_esm_render","initContainer","initCanvas","initCropBox","renderCanvas","cropped","renderCropBox","container","cropper","containerData","offsetWidth","offsetHeight","imageData","rotated","canvasWidth","canvasHeight","canvasData","oldLeft","oldTop","limited","limitCanvas","initialImageData","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","changed","transformed","_getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","disabled","initPreview","crossOrigin","crossOriginUrl","viewBox","appendChild","viewBoxImage","previews","ownerDocument","querySelectorAll","querySelector","el","img","html","innerHTML","cssText","resetPreview","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","getElementsByTagName","events","bind","onCropStart","cropStart","onWheel","wheel","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","getCanvasData","getCropBoxData","setCanvasData","setCropBoxData","setDragMode","dragBox","_this","delta","wheeling","setTimeout","deltaY","wheelDelta","action","changedTouches","touch","identifier","originalEvent","cropping","change","right","bottom","renderable","shiftKey","range","x","y","check","side","move","p","methods","reset","clear","hasSameSize","isImg","replaced","uncreate","load","enable","disable","destroy","originalUrl","offsetX","offsetY","_canvasData","moveTo","_originalEvent","zoomTo","pivot","oldRatio","rotateTo","_scaleX","_scaleY","rounded","getContainerData","getImageData","sized","widthChanged","heightChanged","getCroppedCanvas","HTMLCanvasElement","source","_getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","sourceWidth","sourceHeight","srcX","srcY","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","setAspectRatio","mode","croppable","AnotherCropper","Cropper","tagName","Error","reloading","sizing","toDataURL","read","clone","xhr","XMLHttpRequest","done","ontimeout","onabort","onerror","onload","response","open","responseType","withCredentials","send","_parseOrientation","stop","parentNode","insertBefore","nextSibling","_this2","IS_SAFARI","navigator","userAgent","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild","abort","cropper_esm","H5BookCropImagevue_type_script_lang_js_","components","default","option","watch","val","old","destoryCroper","initCroper","mounted","changeScale","num","$refs","rotateLeft","rotateRight","$nextTick","editImage","$emit","getBytes","filetype","binStr","components_H5BookCropImagevue_type_script_lang_js_","component","componentNormalizer","__file","__webpack_exports__","copyWithin","len","to","inc","LIBRARY","fails","$export","$typed","$buffer","ctx","anInstance","propertyDesc","redefineAll","toIndex","toPrimitive","has","classof","isArrayIter","create","getPrototypeOf","gOPN","f","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","dP","gOPD","ARRAY_BUFFER","SHARED_BUFFER","BYTES_PER_ELEMENT","PROTOTYPE","ArrayProto","$ArrayBuffer","$DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","entries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","arraySlice","slice","arrayToString","toString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","WRONG_LENGTH","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","validate","C","speciesFromList","list","fromList","result","addGetter","internal","_d","$from","step","mapfn","mapping","iterFn","next","$of","TO_LOCALE_BUG","$toLocaleString","proto","every","callbackfn","fill","filter","find","predicate","findIndex","searchElement","includes","separator","reverse","that","middle","some","comparefn","subarray","begin","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","S","F","getOwnPropertyDescriptor","$TypedArrayPrototype$","KEY","wrapper","CLAMPED","NAME","GETTER","SETTER","TypedArray","Base","TAC","FORCED","TypedArrayPrototype","getter","v","o","setter","addElement","$offset","$length","klass","$len","iter","Function","$nativeIterator","CORRECT_ITER_NAME","$iterator","G","W","of","P","DESCRIPTORS","setToStringTag","DATA_VIEW","WRONG_INDEX","BaseBuffer","pow","log","LN2","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","m","c","eLen","eMax","eBias","rt","s","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","numIndex","intIndex","store","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getInt16","getInt32","getFloat32","getFloat64","setInt16","setInt32","setUint32","setFloat32","setFloat64"],"mappings":"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","file":"js/chunk-c86fd492.328112e6.js","sourcesContent":["// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\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!');\n return length;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 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","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./H5BookCropImage.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./H5BookCropImage.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{staticClass:\"avatar-edit\"},[_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.url}})]),_c('div',{staticClass:\"text-center p-4\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"确定裁剪\")])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Cropper.js v1.4.1\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2018-07-15T09:55:31.170Z\n */\n\nvar IN_BROWSER = typeof window !== 'undefined';\nvar WINDOW = IN_BROWSER ? window : {};\nvar NAMESPACE = 'cropper';\n\n// Actions\nvar ACTION_ALL = 'all';\nvar ACTION_CROP = 'crop';\nvar ACTION_MOVE = 'move';\nvar ACTION_ZOOM = 'zoom';\nvar ACTION_EAST = 'e';\nvar ACTION_WEST = 'w';\nvar ACTION_SOUTH = 's';\nvar ACTION_NORTH = 'n';\nvar ACTION_NORTH_EAST = 'ne';\nvar ACTION_NORTH_WEST = 'nw';\nvar ACTION_SOUTH_EAST = 'se';\nvar ACTION_SOUTH_WEST = 'sw';\n\n// Classes\nvar CLASS_CROP = NAMESPACE + '-crop';\nvar CLASS_DISABLED = NAMESPACE + '-disabled';\nvar CLASS_HIDDEN = NAMESPACE + '-hidden';\nvar CLASS_HIDE = NAMESPACE + '-hide';\nvar CLASS_INVISIBLE = NAMESPACE + '-invisible';\nvar CLASS_MODAL = NAMESPACE + '-modal';\nvar CLASS_MOVE = NAMESPACE + '-move';\n\n// Data keys\nvar DATA_ACTION = NAMESPACE + 'Action';\nvar DATA_PREVIEW = NAMESPACE + 'Preview';\n\n// Drag modes\nvar DRAG_MODE_CROP = 'crop';\nvar DRAG_MODE_MOVE = 'move';\nvar DRAG_MODE_NONE = 'none';\n\n// Events\nvar EVENT_CROP = 'crop';\nvar EVENT_CROP_END = 'cropend';\nvar EVENT_CROP_MOVE = 'cropmove';\nvar EVENT_CROP_START = 'cropstart';\nvar EVENT_DBLCLICK = 'dblclick';\nvar EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown';\nvar EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove';\nvar EVENT_POINTER_UP = WINDOW.PointerEvent ? 'pointerup pointercancel' : 'touchend touchcancel mouseup';\nvar EVENT_READY = 'ready';\nvar EVENT_RESIZE = 'resize';\nvar EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';\nvar EVENT_ZOOM = 'zoom';\n\n// RegExps\nvar REGEXP_ACTIONS = /^(?:e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;\nvar REGEXP_DATA_URL = /^data:/;\nvar REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\nvar REGEXP_TAG_NAME = /^(?:img|canvas)$/i;\n\nvar DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0, // 0, 1, 2, 3\n\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none'\n\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n\n // An object with the previous cropping result data\n data: null,\n\n // A selector for adding extra containers to preview\n preview: '',\n\n // Re-render the cropper when resize the window\n responsive: true,\n\n // Restore the cropped area after resize the window\n restore: true,\n\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n\n // Show the black modal\n modal: true,\n\n // Show the dashed lines for guiding\n guides: true,\n\n // Show the center indicator for guiding\n center: true,\n\n // Show the white modal to highlight the crop box\n highlight: true,\n\n // Show the grid background\n background: true,\n\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n\n // Enable to move the image\n movable: true,\n\n // Enable to rotate the image\n rotatable: true,\n\n // Enable to scale the image\n scalable: true,\n\n // Enable to zoom the image\n zoomable: true,\n\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n\n // Enable to move the crop box\n cropBoxMovable: true,\n\n // Enable to resize the crop box\n cropBoxResizable: true,\n\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: 200,\n minContainerHeight: 100,\n\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n};\n\nvar TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Check if the given value is not a number.\n */\nvar isNaN = Number.isNaN || WINDOW.isNaN;\n\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 */\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\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 */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\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 */\nfunction isObject(value) {\n return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\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\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n\n\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (e) {\n return false;\n }\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 */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\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 */\nfunction forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length) /* array-like */) {\n var length = data.length;\n\n var i = void 0;\n\n for (i = 0; i < length; i += 1) {\n if (callback.call(data, data[i], i, data) === false) {\n break;\n }\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/**\n * Extend the given object.\n * @param {*} obj - The object to be extended.\n * @param {*} args - The rest objects which will be merged to the first object.\n * @returns {Object} The extended object.\n */\nvar assign = Object.assign || function assign(obj) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (isObject(obj) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n obj[key] = arg[key];\n });\n }\n });\n }\n\n return obj;\n};\n\nvar REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/i;\n\n/**\n * Normalize decimal number.\n * Check out {@link http://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 */\nfunction normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n}\n\nvar REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;\n\n/**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\nfunction setStyle(element, styles) {\n var style = element.style;\n\n\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value += 'px';\n }\n\n style[property] = value;\n });\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 */\nfunction hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n}\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 */\nfunction 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 = className + ' ' + value;\n }\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 */\nfunction 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/**\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 */\nfunction 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 }\n\n // IE10-11 doesn't support the second parameter of `classList.toggle`\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n}\n\nvar REGEXP_HYPHENATE = /([a-z\\d])([A-Z])/g;\n\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 */\nfunction hyphenate(value) {\n return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();\n}\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 */\nfunction 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-' + hyphenate(name));\n}\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 */\nfunction 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-' + hyphenate(name), data);\n }\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 */\nfunction removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (e) {\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 (e) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute('data-' + hyphenate(name));\n }\n}\n\nvar REGEXP_SPACES = /\\s\\s*/;\nvar onceSupported = function () {\n var supported = false;\n\n if (IN_BROWSER) {\n var once = false;\n var listener = function listener() {};\n var options = Object.defineProperty({}, 'once', {\n get: function get$$1() {\n supported = true;\n return once;\n },\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$$1(value) {\n once = value;\n }\n });\n\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n\n return supported;\n}();\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 */\nfunction removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var handler = listener;\n\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n\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/**\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 */\nfunction addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var _handler = listener;\n\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === undefined ? {} : _element$listeners;\n\n\n _handler = function handler() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\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/**\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 */\nfunction dispatchEvent(element, type, data) {\n var event = void 0;\n\n // Event and CustomEvent on IE9-11 are global objects, not constructors\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/**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\nfunction getOffset(element) {\n var box = element.getBoundingClientRect();\n\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n}\n\nvar location = WINDOW.location;\n\nvar REGEXP_ORIGINS = /^(https?:)\\/\\/([^:/?#]+):?(\\d*)/i;\n\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 */\nfunction isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n\n return parts && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n}\n\n/**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\nfunction addTimestamp(url) {\n var timestamp = 'timestamp=' + new Date().getTime();\n\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n}\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 */\nfunction getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n\n var values = [];\n\n if (isNumber(translateX) && translateX !== 0) {\n values.push('translateX(' + translateX + 'px)');\n }\n\n if (isNumber(translateY) && translateY !== 0) {\n values.push('translateY(' + translateY + 'px)');\n }\n\n // Rotate should come first before scale to match orientation transform\n if (isNumber(rotate) && rotate !== 0) {\n values.push('rotate(' + rotate + 'deg)');\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push('scaleX(' + scaleX + ')');\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push('scaleY(' + scaleY + ')');\n }\n\n var transform = values.length ? values.join(' ') : 'none';\n\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\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 */\nfunction getMaxZoomRatio(pointers) {\n var pointers2 = assign({}, pointers);\n var ratios = [];\n\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n\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 ratios.push(ratio);\n });\n });\n\n ratios.sort(function (a, b) {\n return Math.abs(a) < Math.abs(b);\n });\n\n return ratios[0];\n}\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 */\nfunction getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n\n var end = {\n endX: pageX,\n endY: pageY\n };\n\n return endOnly ? end : assign({\n startX: pageX,\n startY: pageY\n }, end);\n}\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 */\nfunction getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n\n pageX /= count;\n pageY /= count;\n\n return {\n pageX: pageX,\n pageY: pageY\n };\n}\n\n/**\n * Check if the given value is a finite number.\n */\nvar isFinite = Number.isFinite || WINDOW.isFinite;\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 */\nfunction 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\n var isValidNumber = function isValidNumber(value) {\n return isFinite(value) && value > 0;\n };\n\n if (isValidNumber(width) && isValidNumber(height)) {\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 (isValidNumber(width)) {\n height = width / aspectRatio;\n } else if (isValidNumber(height)) {\n width = height * aspectRatio;\n }\n\n return {\n width: width,\n height: height\n };\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 */\nfunction getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n\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\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\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 */\nfunction 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 === undefined ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === undefined ? 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 === undefined ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === undefined ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === undefined ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === undefined ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === undefined ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === undefined ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === undefined ? 0 : _ref8$minHeight;\n\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));\n\n // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\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\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\nvar fromCharCode = String.fromCharCode;\n\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\nfunction getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i = void 0;\n\n length += start;\n\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n}\n\nvar REGEXP_DATA_URL_HEAD = /^data:.*,/;\n\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 */\nfunction 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\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n\n return arrayBuffer;\n}\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 */\nfunction arrayBufferToDataURL(arrayBuffer, mimeType) {\n var uint8 = new Uint8Array(arrayBuffer);\n var data = '';\n\n // TypedArray.prototype.forEach is not supported in some browsers as IE.\n if (isFunction(uint8.forEach)) {\n // Use native `forEach` method first for better performance\n uint8.forEach(function (value) {\n data += fromCharCode(value);\n });\n } else {\n forEach(uint8, function (value) {\n data += fromCharCode(value);\n });\n }\n\n return 'data:' + mimeType + ';base64,' + btoa(data);\n}\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 */\nfunction getOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation = void 0;\n var littleEndian = void 0;\n var app1Start = void 0;\n var ifdStart = void 0;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset < 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\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\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 var _offset = void 0;\n var i = void 0;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n\n return orientation;\n}\n\n/**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\nfunction 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\n // Rotate left 180°\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90°\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90°\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90°\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90°\n case 8:\n rotate = -90;\n break;\n\n default:\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n\nvar 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\n\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n\n var containerData = {\n width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),\n height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)\n };\n\n this.containerData = containerData;\n\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n\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\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\n canvasData.left = (containerData.width - canvasWidth) / 2;\n canvasData.top = (containerData.height - canvasHeight) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n this.initialImageData = assign({}, imageData);\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\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\n\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\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\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\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\n this.limitCanvas(false, true);\n\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\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\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\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n\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\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);\n\n // Initialize auto crop area\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\n // The width/height of auto crop area must large than \"minWidth/Height\"\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\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\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;\n\n // The min/maxCropBoxWidth/Height must be less than container's width/height\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 }\n\n // The minWidth/Height must be less than maxWidth/Height\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\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\n this.limitCropBox(false, true);\n\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\nvar preview = {\n initPreview: function initPreview() {\n var crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = url;\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 = this.element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n\n this.previews = previews;\n\n forEach(previews, function (el) {\n var img = document.createElement('img');\n\n // Save the original size for recover\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\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 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\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\n setStyle(element, {\n width: data.width,\n height: data.height\n });\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\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\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\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\nvar events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\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 }\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\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 }\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\nvar handlers = {\n resize: function resize() {\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n\n var minContainerWidth = Number(options.minContainerWidth) || 200;\n var minContainerHeight = Number(options.minContainerHeight) || 100;\n\n if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) {\n return;\n }\n\n var ratio = container.offsetWidth / containerData.width;\n\n // Resize when width changed or height changed\n if (ratio !== 1 || container.offsetHeight !== containerData.height) {\n var canvasData = void 0;\n var cropBoxData = void 0;\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(e) {\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 e.preventDefault();\n\n // Limit wheel speed to prevent zoom too fast (#21)\n if (this.wheeling) {\n return;\n }\n\n this.wheeling = true;\n\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n\n if (e.deltaY) {\n delta = e.deltaY > 0 ? 1 : -1;\n } else if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n } else if (e.detail) {\n delta = e.detail > 0 ? 1 : -1;\n }\n\n this.zoom(-delta * ratio, e);\n },\n cropStart: function cropStart(e) {\n if (this.disabled) {\n return;\n }\n\n var options = this.options,\n pointers = this.pointers;\n\n var action = void 0;\n\n if (e.changedTouches) {\n // Handle touch event\n forEach(e.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[e.pointerId || 0] = getPointer(e);\n }\n\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(e.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: e,\n action: action\n }) === false) {\n return;\n }\n\n // This line is required for preventing page zooming in iOS browsers\n e.preventDefault();\n\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(e) {\n var action = this.action;\n\n\n if (this.disabled || !action) {\n return;\n }\n\n var pointers = this.pointers;\n\n\n e.preventDefault();\n\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: e,\n action: action\n }) === false) {\n return;\n }\n\n if (e.changedTouches) {\n forEach(e.changedTouches, function (touch) {\n assign(pointers[touch.identifier], getPointer(touch, true));\n });\n } else {\n assign(pointers[e.pointerId || 0], getPointer(e, true));\n }\n\n this.change(e);\n },\n cropEnd: function cropEnd(e) {\n if (this.disabled) {\n return;\n }\n\n var action = this.action,\n pointers = this.pointers;\n\n\n if (e.changedTouches) {\n forEach(e.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[e.pointerId || 0];\n }\n\n if (!action) {\n return;\n }\n\n e.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: e,\n action: action\n });\n }\n};\n\nvar change = {\n change: function change(e) {\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\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 = void 0;\n\n // Locking aspect ratio in \"free mode\" by holding shift key\n if (!aspectRatio && e.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n\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 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 default:\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\n // Resize crop box\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\n // Move canvas\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n\n // Zoom canvas\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), e);\n renderable = false;\n break;\n\n // Create crop box\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 }\n\n // Show the crop box if is hidden\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 default:\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 }\n\n // Override\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n};\n\nvar 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\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\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\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true);\n\n // Render canvas after crop box rendered\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n\n return this;\n },\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\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\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\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 /**\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\n if (!getData(element, NAMESPACE)) {\n return this;\n }\n\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n\n this.uncreate();\n removeData(element, NAMESPACE);\n\n return this;\n },\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 _canvasData = this.canvasData,\n left = _canvasData.left,\n top = _canvasData.top;\n\n\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\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\n var changed = false;\n\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 /**\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\n\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 /**\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\n\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\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 };\n\n // Zoom from the triggering point of the event\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 /**\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 /**\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 /**\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\n\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\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\n\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\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\n var transformed = false;\n\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 /**\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$$1() {\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\n var data = void 0;\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\n var ratio = imageData.width / imageData.naturalWidth;\n\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\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 /**\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$$1(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n\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 /**\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 /**\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 /**\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\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 /**\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\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 /**\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\n var data = void 0;\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 /**\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\n var widthChanged = void 0;\n var heightChanged = void 0;\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 /**\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\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options);\n\n // Returns the source canvas if it is not cropped.\n if (!this.cropped) {\n return source;\n }\n\n var _getData = this.getData(),\n initialX = _getData.x,\n initialY = _getData.y,\n initialWidth = _getData.width,\n initialHeight = _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\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === undefined ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n\n\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n var sourceWidth = source.width;\n var sourceHeight = source.height;\n\n // Source canvas parameters\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth = void 0;\n var srcHeight = void 0;\n\n // Destination canvas parameters\n var dstX = void 0;\n var dstY = void 0;\n var dstWidth = void 0;\n var dstHeight = void 0;\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];\n\n // Avoid \"IndexSizeError\"\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n }\n\n // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n context.drawImage.apply(context, [source].concat(toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n\n return canvas;\n },\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\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 /**\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\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n\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\nvar AnotherCropper = WINDOW.Cropper;\n\nvar Cropper = 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 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\n var tagName = element.tagName.toLowerCase();\n var url = void 0;\n\n if (getData(element, NAMESPACE)) {\n return;\n }\n\n setData(element, NAMESPACE, this);\n\n if (tagName === 'img') {\n this.isImg = true;\n\n // e.g.: \"img/picture.jpg\"\n url = element.getAttribute('src') || '';\n this.originalUrl = url;\n\n // Stop when it's a blank image\n if (!url) {\n return;\n }\n\n // e.g.: \"http://example.com/img/picture.jpg\"\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\n var element = this.element,\n options = this.options;\n\n\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n }\n\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n }\n\n // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari\n if (REGEXP_DATA_URL.test(url)) {\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n this.clone();\n }\n\n return;\n }\n\n var xhr = new XMLHttpRequest();\n\n this.reloading = true;\n this.xhr = xhr;\n\n var done = function done() {\n _this.reloading = false;\n _this.xhr = null;\n };\n\n xhr.ontimeout = done;\n xhr.onabort = done;\n xhr.onerror = function () {\n done();\n _this.clone();\n };\n\n xhr.onload = function () {\n done();\n _this.read(xhr.response);\n };\n\n // Bust cache when there is a \"crossOrigin\" property\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;\n\n var orientation = getOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n if (orientation > 1) {\n this.url = arrayBufferToDataURL(arrayBuffer, 'image/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\n var crossOrigin = void 0;\n var crossOriginUrl = void 0;\n\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n crossOrigin = element.crossOrigin;\n\n\n if (crossOrigin) {\n crossOriginUrl = url;\n } else {\n crossOrigin = 'anonymous';\n\n // Bust cache when there is not a \"crossOrigin\" property\n crossOriginUrl = addTimestamp(url);\n }\n }\n\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = crossOriginUrl || url;\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.isImg ? this.element : this.image;\n\n image.onload = null;\n image.onerror = null;\n this.sizing = true;\n\n var IS_SAFARI = WINDOW.navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(WINDOW.navigator.userAgent);\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.sizing = false;\n _this2.sized = true;\n _this2.build();\n };\n\n // Modern browsers (except Safari)\n if (image.naturalWidth && !IS_SAFARI) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n\n this.sizingImage = sizingImage;\n\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n\n if (!IS_SAFARI) {\n body.removeChild(sizingImage);\n }\n };\n\n sizingImage.src = image.src;\n\n // iOS Safari will convert the image automatically\n // with its orientation once append it into DOM (#279)\n if (!IS_SAFARI) {\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\n\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;\n\n // Create cropper elements\n\n var container = element.parentNode;\n var template = document.createElement('div');\n\n template.innerHTML = TEMPLATE;\n\n var cropper = template.querySelector('.' + NAMESPACE + '-container');\n var canvas = cropper.querySelector('.' + NAMESPACE + '-canvas');\n var dragBox = cropper.querySelector('.' + NAMESPACE + '-drag-box');\n var cropBox = cropper.querySelector('.' + NAMESPACE + '-crop-box');\n var face = cropBox.querySelector('.' + NAMESPACE + '-face');\n\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('.' + NAMESPACE + '-view-box');\n this.face = face;\n\n canvas.appendChild(image);\n\n // Hide the original image\n addClass(element, CLASS_HIDDEN);\n\n // Inserts the cropper after to the current image\n container.insertBefore(cropper, element.nextSibling);\n\n // Show the image if is hidden\n if (!this.isImg) {\n removeClass(image, CLASS_HIDE);\n }\n\n this.initPreview();\n this.bind();\n\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\n addClass(cropBox, CLASS_HIDDEN);\n\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(NAMESPACE + '-dashed'), CLASS_HIDDEN);\n }\n\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(NAMESPACE + '-center'), CLASS_HIDDEN);\n }\n\n if (options.background) {\n addClass(cropper, 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(NAMESPACE + '-line'), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(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.abort();\n } else if (this.image) {\n this.stop();\n }\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 /**\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 return Cropper;\n}();\n\nassign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\nexport default Cropper;\n","\r\n\r\n\r\n\r\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!./H5BookCropImage.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!./H5BookCropImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./H5BookCropImage.vue?vue&type=template&id=8fa036e2&\"\nimport script from \"./H5BookCropImage.vue?vue&type=script&lang=js&\"\nexport * from \"./H5BookCropImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./H5BookCropImage.vue?vue&type=style&index=0&lang=css&\"\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 null,\n null\n \n)\n\ncomponent.options.__file = \"H5BookCropImage.vue\"\nexport default component.exports","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\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 = Math.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';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.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 some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 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 };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(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 if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = 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 = buffer[$LENGTH];\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 this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\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[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n"],"sourceRoot":""}