From f6aff442b5579ff6457a0b995c0a2fe7673b9965 Mon Sep 17 00:00:00 2001 From: Fengyuan Chen Date: Sat, 21 Oct 2017 17:34:30 +0800 Subject: [PATCH] build: release 1.1.3 --- CHANGELOG.md | 4 +++ README.md | 2 +- dist/cropper.common.js | 54 ++++++++++++++++++----------------- dist/cropper.css | 4 +-- dist/cropper.esm.js | 54 ++++++++++++++++++----------------- dist/cropper.js | 54 ++++++++++++++++++----------------- dist/cropper.min.css | 4 +-- dist/cropper.min.js | 6 ++-- docs/css/cropper.css | 4 +-- docs/index.html | 2 +- docs/js/cropper.js | 54 ++++++++++++++++++----------------- docs/js/main.js | 65 +++++++++++++++++++----------------------- package-lock.json | 51 +++++++++++++++++++++++++++------ package.json | 6 ++-- 14 files changed, 203 insertions(+), 161 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d74a9d404..5f551831f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.1.3 (Oct 21, 2017) + +- Fixed a bug of render when disable one of `rotatable` and `scalable` options (#241). + ## 1.1.2 (Oct 18, 2017) - Normalize related decimal numbers when crop an image with canvas. diff --git a/README.md b/README.md index 55a1c237a..8b9e227a1 100644 --- a/README.md +++ b/README.md @@ -794,7 +794,7 @@ Get a canvas drawn the cropped image. If it is not cropped, then returns a canva > After then, you can display the canvas as an image directly, or use [HTMLCanvasElement.toDataURL](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) to get a Data URL, or use [HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) to get a blob and upload it to server with [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) if the browser supports these APIs. -Avoid to get a blank output image, you might need to set the `maxWidth` and `maxHeight`properties to limited numbers, because of [the size limits of a canvas element](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element). +Avoid to get a blank output image, you might need to set the `maxWidth` and `maxHeight` properties to limited numbers, because of [the size limits of a canvas element](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element). ```js cropper.getCroppedCanvas(); diff --git a/dist/cropper.common.js b/dist/cropper.common.js index 6dcb37721..97147b3e5 100644 --- a/dist/cropper.common.js +++ b/dist/cropper.common.js @@ -1,17 +1,16 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:27:02.189Z + * Date: 2017-10-21T09:27:36.848Z */ 'use strict'; -var global = typeof window !== 'undefined' ? window : {}; - +var WINDOW = typeof window !== 'undefined' ? window : {}; var NAMESPACE = 'cropper'; // Actions @@ -54,9 +53,9 @@ var EVENT_CROP_START = 'cropstart'; var EVENT_DBLCLICK = 'dblclick'; var EVENT_ERROR = 'error'; var EVENT_LOAD = 'load'; -var EVENT_POINTER_DOWN = global.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; -var EVENT_POINTER_MOVE = global.PointerEvent ? 'pointermove' : 'touchmove mousemove'; -var EVENT_POINTER_UP = global.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; +var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; +var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove'; +var EVENT_POINTER_UP = WINDOW.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; var EVENT_READY = 'ready'; var EVENT_RESIZE = 'resize'; var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll'; @@ -173,7 +172,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr /** * Check if the given value is not a number. */ -var isNaN = Number.isNaN || global.isNaN; +var isNaN = Number.isNaN || WINDOW.isNaN; /** * Check if the given value is a number. @@ -637,8 +636,8 @@ function getOffset(element) { var box = element.getBoundingClientRect(); return { - left: box.left + ((global.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), - top: box.top + ((global.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) + left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), + top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) }; } @@ -652,7 +651,7 @@ function empty(element) { } } -var location = global.location; +var location = WINDOW.location; var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i; @@ -722,7 +721,7 @@ function getTransforms(_ref) { }; } -var navigator = global.navigator; +var navigator = WINDOW.navigator; var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent); @@ -835,7 +834,7 @@ function getPointersCenter(pointers) { /** * Check if the given value is a finite number. */ -var isFinite = Number.isFinite || global.isFinite; +var isFinite = Number.isFinite || WINDOW.isFinite; /** * Get the max sizes in a rectangle under the given aspect ratio. @@ -909,9 +908,12 @@ function getRotatedSizes(_ref5) { function getSourceCanvas(image, _ref6, _ref7, _ref8) { var imageNaturalWidth = _ref6.naturalWidth, imageNaturalHeight = _ref6.naturalHeight, - rotate = _ref6.rotate, - scaleX = _ref6.scaleX, - scaleY = _ref6.scaleY; + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY; var aspectRatio = _ref7.aspectRatio, naturalWidth = _ref7.naturalWidth, naturalHeight = _ref7.naturalHeight; @@ -1338,9 +1340,9 @@ var render = { if (transformed) { var _getRotatedSizes = getRotatedSizes({ - width: imageData.naturalWidth * Math.abs(imageData.scaleX), - height: imageData.naturalHeight * Math.abs(imageData.scaleY), - degree: imageData.rotate + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 }), naturalWidth = _getRotatedSizes.width, naturalHeight = _getRotatedSizes.height; @@ -1730,7 +1732,7 @@ var events = { addListener(document, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this)); if (options.responsive) { - addListener(global, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); + addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); } }, unbind: function unbind() { @@ -1773,7 +1775,7 @@ var events = { removeListener(document, EVENT_POINTER_UP, this.onCropEnd); if (options.responsive) { - removeListener(global, EVENT_RESIZE, this.onResize); + removeListener(window, EVENT_RESIZE, this.onResize); } } }; @@ -3049,7 +3051,7 @@ var methods = { getCroppedCanvas: function getCroppedCanvas() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (!this.ready || !global.HTMLCanvasElement) { + if (!this.ready || !window.HTMLCanvasElement) { return null; } @@ -3241,7 +3243,7 @@ var _createClass = function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var AnotherCropper = global.Cropper; +var AnotherCropper = WINDOW.Cropper; var Cropper = function () { /** @@ -3305,7 +3307,7 @@ var Cropper = function () { // e.g.: "http://example.com/img/picture.jpg" url = element.src; - } else if (tagName === 'canvas' && global.HTMLCanvasElement) { + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { url = element.toDataURL(); } @@ -3327,7 +3329,7 @@ var Cropper = function () { options = this.options; - if (!options.checkOrientation || !global.ArrayBuffer) { + if (!options.checkOrientation || !window.ArrayBuffer) { this.clone(); return; } @@ -3637,7 +3639,7 @@ var Cropper = function () { }], [{ key: 'noConflict', value: function noConflict() { - global.Cropper = AnotherCropper; + window.Cropper = AnotherCropper; return Cropper; } diff --git a/dist/cropper.css b/dist/cropper.css index b9580614e..abe485d24 100644 --- a/dist/cropper.css +++ b/dist/cropper.css @@ -1,11 +1,11 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:26:08.981Z + * Date: 2017-10-21T09:27:29.883Z */ .cropper-container { diff --git a/dist/cropper.esm.js b/dist/cropper.esm.js index dc707f327..7aeeb578e 100644 --- a/dist/cropper.esm.js +++ b/dist/cropper.esm.js @@ -1,15 +1,14 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:27:02.189Z + * Date: 2017-10-21T09:27:36.848Z */ -var global = typeof window !== 'undefined' ? window : {}; - +var WINDOW = typeof window !== 'undefined' ? window : {}; var NAMESPACE = 'cropper'; // Actions @@ -52,9 +51,9 @@ var EVENT_CROP_START = 'cropstart'; var EVENT_DBLCLICK = 'dblclick'; var EVENT_ERROR = 'error'; var EVENT_LOAD = 'load'; -var EVENT_POINTER_DOWN = global.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; -var EVENT_POINTER_MOVE = global.PointerEvent ? 'pointermove' : 'touchmove mousemove'; -var EVENT_POINTER_UP = global.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; +var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; +var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove'; +var EVENT_POINTER_UP = WINDOW.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; var EVENT_READY = 'ready'; var EVENT_RESIZE = 'resize'; var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll'; @@ -171,7 +170,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr /** * Check if the given value is not a number. */ -var isNaN = Number.isNaN || global.isNaN; +var isNaN = Number.isNaN || WINDOW.isNaN; /** * Check if the given value is a number. @@ -635,8 +634,8 @@ function getOffset(element) { var box = element.getBoundingClientRect(); return { - left: box.left + ((global.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), - top: box.top + ((global.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) + left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), + top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) }; } @@ -650,7 +649,7 @@ function empty(element) { } } -var location = global.location; +var location = WINDOW.location; var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i; @@ -720,7 +719,7 @@ function getTransforms(_ref) { }; } -var navigator = global.navigator; +var navigator = WINDOW.navigator; var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent); @@ -833,7 +832,7 @@ function getPointersCenter(pointers) { /** * Check if the given value is a finite number. */ -var isFinite = Number.isFinite || global.isFinite; +var isFinite = Number.isFinite || WINDOW.isFinite; /** * Get the max sizes in a rectangle under the given aspect ratio. @@ -907,9 +906,12 @@ function getRotatedSizes(_ref5) { function getSourceCanvas(image, _ref6, _ref7, _ref8) { var imageNaturalWidth = _ref6.naturalWidth, imageNaturalHeight = _ref6.naturalHeight, - rotate = _ref6.rotate, - scaleX = _ref6.scaleX, - scaleY = _ref6.scaleY; + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY; var aspectRatio = _ref7.aspectRatio, naturalWidth = _ref7.naturalWidth, naturalHeight = _ref7.naturalHeight; @@ -1336,9 +1338,9 @@ var render = { if (transformed) { var _getRotatedSizes = getRotatedSizes({ - width: imageData.naturalWidth * Math.abs(imageData.scaleX), - height: imageData.naturalHeight * Math.abs(imageData.scaleY), - degree: imageData.rotate + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 }), naturalWidth = _getRotatedSizes.width, naturalHeight = _getRotatedSizes.height; @@ -1728,7 +1730,7 @@ var events = { addListener(document, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this)); if (options.responsive) { - addListener(global, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); + addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); } }, unbind: function unbind() { @@ -1771,7 +1773,7 @@ var events = { removeListener(document, EVENT_POINTER_UP, this.onCropEnd); if (options.responsive) { - removeListener(global, EVENT_RESIZE, this.onResize); + removeListener(window, EVENT_RESIZE, this.onResize); } } }; @@ -3047,7 +3049,7 @@ var methods = { getCroppedCanvas: function getCroppedCanvas() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (!this.ready || !global.HTMLCanvasElement) { + if (!this.ready || !window.HTMLCanvasElement) { return null; } @@ -3239,7 +3241,7 @@ var _createClass = function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var AnotherCropper = global.Cropper; +var AnotherCropper = WINDOW.Cropper; var Cropper = function () { /** @@ -3303,7 +3305,7 @@ var Cropper = function () { // e.g.: "http://example.com/img/picture.jpg" url = element.src; - } else if (tagName === 'canvas' && global.HTMLCanvasElement) { + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { url = element.toDataURL(); } @@ -3325,7 +3327,7 @@ var Cropper = function () { options = this.options; - if (!options.checkOrientation || !global.ArrayBuffer) { + if (!options.checkOrientation || !window.ArrayBuffer) { this.clone(); return; } @@ -3635,7 +3637,7 @@ var Cropper = function () { }], [{ key: 'noConflict', value: function noConflict() { - global.Cropper = AnotherCropper; + window.Cropper = AnotherCropper; return Cropper; } diff --git a/dist/cropper.js b/dist/cropper.js index 7ae4385bb..1a074f8e3 100644 --- a/dist/cropper.js +++ b/dist/cropper.js @@ -1,11 +1,11 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:27:02.189Z + * Date: 2017-10-21T09:27:36.848Z */ (function (global, factory) { @@ -14,8 +14,7 @@ (global.Cropper = factory()); }(this, (function () { 'use strict'; -var global = typeof window !== 'undefined' ? window : {}; - +var WINDOW = typeof window !== 'undefined' ? window : {}; var NAMESPACE = 'cropper'; // Actions @@ -58,9 +57,9 @@ var EVENT_CROP_START = 'cropstart'; var EVENT_DBLCLICK = 'dblclick'; var EVENT_ERROR = 'error'; var EVENT_LOAD = 'load'; -var EVENT_POINTER_DOWN = global.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; -var EVENT_POINTER_MOVE = global.PointerEvent ? 'pointermove' : 'touchmove mousemove'; -var EVENT_POINTER_UP = global.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; +var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; +var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove'; +var EVENT_POINTER_UP = WINDOW.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; var EVENT_READY = 'ready'; var EVENT_RESIZE = 'resize'; var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll'; @@ -177,7 +176,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr /** * Check if the given value is not a number. */ -var isNaN = Number.isNaN || global.isNaN; +var isNaN = Number.isNaN || WINDOW.isNaN; /** * Check if the given value is a number. @@ -641,8 +640,8 @@ function getOffset(element) { var box = element.getBoundingClientRect(); return { - left: box.left + ((global.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), - top: box.top + ((global.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) + left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), + top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) }; } @@ -656,7 +655,7 @@ function empty(element) { } } -var location = global.location; +var location = WINDOW.location; var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i; @@ -726,7 +725,7 @@ function getTransforms(_ref) { }; } -var navigator = global.navigator; +var navigator = WINDOW.navigator; var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent); @@ -839,7 +838,7 @@ function getPointersCenter(pointers) { /** * Check if the given value is a finite number. */ -var isFinite = Number.isFinite || global.isFinite; +var isFinite = Number.isFinite || WINDOW.isFinite; /** * Get the max sizes in a rectangle under the given aspect ratio. @@ -913,9 +912,12 @@ function getRotatedSizes(_ref5) { function getSourceCanvas(image, _ref6, _ref7, _ref8) { var imageNaturalWidth = _ref6.naturalWidth, imageNaturalHeight = _ref6.naturalHeight, - rotate = _ref6.rotate, - scaleX = _ref6.scaleX, - scaleY = _ref6.scaleY; + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY; var aspectRatio = _ref7.aspectRatio, naturalWidth = _ref7.naturalWidth, naturalHeight = _ref7.naturalHeight; @@ -1342,9 +1344,9 @@ var render = { if (transformed) { var _getRotatedSizes = getRotatedSizes({ - width: imageData.naturalWidth * Math.abs(imageData.scaleX), - height: imageData.naturalHeight * Math.abs(imageData.scaleY), - degree: imageData.rotate + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 }), naturalWidth = _getRotatedSizes.width, naturalHeight = _getRotatedSizes.height; @@ -1734,7 +1736,7 @@ var events = { addListener(document, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this)); if (options.responsive) { - addListener(global, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); + addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); } }, unbind: function unbind() { @@ -1777,7 +1779,7 @@ var events = { removeListener(document, EVENT_POINTER_UP, this.onCropEnd); if (options.responsive) { - removeListener(global, EVENT_RESIZE, this.onResize); + removeListener(window, EVENT_RESIZE, this.onResize); } } }; @@ -3053,7 +3055,7 @@ var methods = { getCroppedCanvas: function getCroppedCanvas() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (!this.ready || !global.HTMLCanvasElement) { + if (!this.ready || !window.HTMLCanvasElement) { return null; } @@ -3245,7 +3247,7 @@ var _createClass = function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var AnotherCropper = global.Cropper; +var AnotherCropper = WINDOW.Cropper; var Cropper = function () { /** @@ -3309,7 +3311,7 @@ var Cropper = function () { // e.g.: "http://example.com/img/picture.jpg" url = element.src; - } else if (tagName === 'canvas' && global.HTMLCanvasElement) { + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { url = element.toDataURL(); } @@ -3331,7 +3333,7 @@ var Cropper = function () { options = this.options; - if (!options.checkOrientation || !global.ArrayBuffer) { + if (!options.checkOrientation || !window.ArrayBuffer) { this.clone(); return; } @@ -3641,7 +3643,7 @@ var Cropper = function () { }], [{ key: 'noConflict', value: function noConflict() { - global.Cropper = AnotherCropper; + window.Cropper = AnotherCropper; return Cropper; } diff --git a/dist/cropper.min.css b/dist/cropper.min.css index 51cbceb7f..493f27fe3 100644 --- a/dist/cropper.min.css +++ b/dist/cropper.min.css @@ -1,10 +1,10 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:26:08.981Z + * Date: 2017-10-21T09:27:29.883Z */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline-color:rgba(51,153,255,.75);outline:1px solid #39f;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:e-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:n-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:w-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:s-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:e-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:n-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:w-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:ne-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nw-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:sw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:se-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} /*# sourceMappingURL=cropper.min.css.map */ \ No newline at end of file diff --git a/dist/cropper.min.js b/dist/cropper.min.js index 3b54f6932..f82f86d0c 100644 --- a/dist/cropper.min.js +++ b/dist/cropper.min.js @@ -1,10 +1,10 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:27:02.189Z + * Date: 2017-10-21T09:27:36.848Z */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Cropper=e()}(this,function(){"use strict";function t(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e1?e-1:0),n=1;n0){if(Object.assign)return Object.assign.apply(Object,[t].concat(i));i.forEach(function(e){a(e)&&Object.keys(e).forEach(function(i){t[i]=e[i]})})}return t}function s(t,e){for(var i=arguments.length,a=Array(i>2?i-2:0),n=2;n1&&void 0!==arguments[1]?arguments[1]:1e11;return tt.test(t)?Math.round(t*e)/e:t}function l(t,i){var a=t.style;r(i,function(t,i){et.test(i)&&e(t)&&(t+="px"),a[i]=t})}function d(t,e){return t.classList?t.classList.contains(e):t.className.indexOf(e)>-1}function p(t,i){if(i)if(e(t.length))r(t,function(t){p(t,i)});else if(t.classList)t.classList.add(i);else{var a=t.className.trim();a?a.indexOf(i)<0&&(t.className=a+" "+i):t.className=i}}function m(t,i){i&&(e(t.length)?r(t,function(t){m(t,i)}):t.classList?t.classList.remove(i):t.className.indexOf(i)>=0&&(t.className=t.className.replace(i,"")))}function u(t,i,a){i&&(e(t.length)?r(t,function(t){u(t,i,a)}):a?p(t,i):m(t,i))}function g(t){return t.replace(it,"$1-$2").toLowerCase()}function f(t,e){return a(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-"+g(e))}function v(t,e,i){a(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-"+g(e),i)}function w(t,e){if(a(t[e]))delete t[e];else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=null}else t.removeAttribute("data-"+g(e))}function b(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(o(i)){var n=e.trim().split(at);n.length>1?r(n,function(e){b(t,e,i)}):(o(i.onceListener)&&delete(i=i.onceListener).onceListener,t.removeEventListener?t.removeEventListener(e,i,a):t.detachEvent&&t.detachEvent("on"+e,i))}}function x(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(o(i)){var n=e.trim().split(at);if(n.length>1)r(n,function(e){x(t,e,i)});else{if(a.once){var h=i,s=function i(){for(var a=arguments.length,n=Array(a),o=0;o0};return n(a)&&n(i)?i*e>a?i=a/e:a=i*e:n(a)?i=a/e:n(i)&&(a=i*e),{width:a,height:i}}function L(t){var e=t.width,i=t.height,a=t.degree;if((a=Math.abs(a))%180==90)return{width:i,height:e};var n=a%90*Math.PI/180,o=Math.sin(n),r=Math.cos(n);return{width:e*r+i*o,height:e*o+i*r}}function Y(e,i,a,n){var o=i.naturalWidth,r=i.naturalHeight,h=i.rotate,s=i.scaleX,l=i.scaleY,d=a.aspectRatio,p=a.naturalWidth,m=a.naturalHeight,u=n.fillColor,g=void 0===u?"transparent":u,f=n.imageSmoothingEnabled,v=void 0===f||f,w=n.imageSmoothingQuality,b=void 0===w?"low":w,x=n.maxWidth,y=void 0===x?1/0:x,M=n.maxHeight,C=void 0===M?1/0:M,D=n.minWidth,B=void 0===D?0:D,k=n.minHeight,E=void 0===k?0:k,T=document.createElement("canvas"),W=T.getContext("2d"),N=H({aspectRatio:d,width:y,height:C}),L=H({aspectRatio:d,width:B,height:E}),Y=Math.min(N.width,Math.max(L.width,p)),X=Math.min(N.height,Math.max(L.height,m)),O=[-o/2,-r/2,o,r];return T.width=c(Y),T.height=c(X),W.fillStyle=g,W.fillRect(0,0,Y,X),W.save(),W.translate(Y/2,X/2),W.rotate(h*Math.PI/180),W.scale(s,l),W.imageSmoothingEnabled=v,W.imageSmoothingQuality=b,W.drawImage.apply(W,[e].concat(t(O.map(function(t){return Math.floor(c(t))})))),W.restore(),T}function X(t,e,i){var a="",n=void 0;for(i+=e,n=e;n=8&&(o=s+l)}}}if(o){var d=e.getUint16(o,a),p=void 0,m=void 0;for(m=0;mt.width?3===i?s=t.height*r:c=t.width/r:3===i?c=t.width/r:s=t.height*r;var l={aspectRatio:r,naturalWidth:n,naturalHeight:o,width:s,height:c};l.left=(t.width-s)/2,l.top=(t.height-c)/2,l.oldLeft=l.left,l.oldTop=l.top,this.canvasData=l,this.limited=1===i||2===i,this.limitCanvas(!0,!0),this.initialImageData=h({},e),this.initialCanvasData=h({},l)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=i.viewMode,h=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(i.minCanvasWidth)||0,l=Number(i.minCanvasHeight)||0;r>1?(c=Math.max(c,a.width),l=Math.max(l,a.height),3===r&&(l*h>c?c=l*h:l=c/h)):r>0&&(c?c=Math.max(c,s?o.width:0):l?l=Math.max(l,s?o.height:0):s&&(c=o.width,(l=o.height)*h>c?c=l*h:l=c/h));var d=H({aspectRatio:h,width:c,height:l});c=d.width,l=d.height,n.minWidth=c,n.minHeight=l,n.maxWidth=1/0,n.maxHeight=1/0}if(e)if(r){var p=a.width-n.width,m=a.height-n.height;n.minLeft=Math.min(0,p),n.minTop=Math.min(0,m),n.maxLeft=Math.max(0,p),n.maxTop=Math.max(0,m),s&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===r&&(n.width>=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var n=L({width:a.naturalWidth*Math.abs(a.scaleX),height:a.naturalHeight*Math.abs(a.scaleY),degree:a.rotate}),o=n.width,r=n.height,s=i.width*(o/i.naturalWidth),c=i.height*(r/i.naturalHeight);i.left-=(s-i.width)/2,i.top-=(c-i.height)/2,i.width=s,i.height=c,i.aspectRatio=o/r,i.naturalWidth=o,i.naturalHeight=r,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?n.height=n.width/i:n.width=n.height*i),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=e.left+(e.width-n.width)/2,n.top=e.top+(e.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=h({},n)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=this.limited,h=i.aspectRatio;if(t){var s=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,l=Math.min(a.width,r?n.width:a.width),d=Math.min(a.height,r?n.height:a.height);s=Math.min(s,a.width),c=Math.min(c,a.height),h&&(s&&c?c*h>s?c=s/h:s=c*h:s?c=s/h:c&&(s=c*h),d*h>l?d=l/h:l=d*h),o.minWidth=Math.min(s,l),o.minHeight=Math.min(c,d),o.maxWidth=l,o.maxHeight=d}e&&(r?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?"move":"all"),l(this.cropBox,h({width:i.width,height:i.height},k({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),this.complete&&y(this.element,"crop",this.getData())}},pt={initPreview:function(){var t=this.crossOrigin,e=this.options.preview,i=t?this.crossOriginUrl:this.url,a=document.createElement("img");if(t&&(a.crossOrigin=t),a.src=i,this.viewBox.appendChild(a),this.image2=a,e){var n=e.querySelector?[e]:document.querySelectorAll(e);this.previews=n,r(n,function(e){var a=document.createElement("img");v(e,"preview",{width:e.offsetWidth,height:e.offsetHeight,html:e.innerHTML}),t&&(a.crossOrigin=t),a.src=i,a.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;"',C(e),e.appendChild(a)})}},resetPreview:function(){r(this.previews,function(t){var e=f(t,"preview");l(t,{width:e.width,height:e.height}),t.innerHTML=e.html,w(t,"preview")})},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,n=i.height,o=t.width,s=t.height,c=i.left-e.left-t.left,d=i.top-e.top-t.top;this.cropped&&!this.disabled&&(l(this.image2,h({width:o,height:s},k(h({translateX:-c,translateY:-d},t)))),r(this.previews,function(e){var i=f(e,"preview"),r=i.width,p=i.height,m=r,u=p,g=1;a&&(u=n*(g=r/a)),n&&u>p&&(m=a*(g=p/n),u=p),l(e,{width:m,height:u}),l(e.getElementsByTagName("img")[0],h({width:o*g,height:s*g},k(h({translateX:-c*g,translateY:-d*g},t))))}))}},mt={bind:function(){var t=this.element,e=this.options,i=this.cropper;o(e.cropstart)&&x(t,"cropstart",e.cropstart),o(e.cropmove)&&x(t,"cropmove",e.cropmove),o(e.cropend)&&x(t,"cropend",e.cropend),o(e.crop)&&x(t,"crop",e.crop),o(e.zoom)&&x(t,"zoom",e.zoom),x(i,P,this.onCropStart=s(this.cropStart,this)),e.zoomable&&e.zoomOnWheel&&x(i,"wheel mousewheel DOMMouseScroll",this.onWheel=s(this.wheel,this)),e.toggleDragModeOnDblclick&&x(i,"dblclick",this.onDblclick=s(this.dblclick,this)),x(document,q,this.onCropMove=s(this.cropMove,this)),x(document,$,this.onCropEnd=s(this.cropEnd,this)),e.responsive&&x(U,"resize",this.onResize=s(this.resize,this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;o(e.cropstart)&&b(t,"cropstart",e.cropstart),o(e.cropmove)&&b(t,"cropmove",e.cropmove),o(e.cropend)&&b(t,"cropend",e.cropend),o(e.crop)&&b(t,"crop",e.crop),o(e.zoom)&&b(t,"zoom",e.zoom),b(i,P,this.onCropStart),e.zoomable&&e.zoomOnWheel&&b(i,"wheel mousewheel DOMMouseScroll",this.onWheel),e.toggleDragModeOnDblclick&&b(i,"dblclick",this.onDblclick),b(document,q,this.onCropMove),b(document,$,this.onCropEnd),e.responsive&&b(U,"resize",this.onResize)}},ut={resize:function(){var t=this.options,e=this.container,i=this.containerData,a=Number(t.minContainerWidth)||200,n=Number(t.minContainerHeight)||100;if(!(this.disabled||i.width<=a||i.height<=n)){var o=e.offsetWidth/i.width;if(1!==o||e.offsetHeight!==i.height){var h=void 0,s=void 0;t.restore&&(h=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(r(h,function(t,e){h[e]=t*o})),this.setCropBoxData(r(s,function(t,e){s[e]=t*o})))}}},dblclick:function(){this.disabled||"none"===this.options.dragMode||this.setDragMode(d(this.dragBox,"cropper-crop")?"move":"crop")},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout(function(){e.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){if(!this.disabled){var e=this.options,i=this.pointers,a=void 0;t.changedTouches?r(t.changedTouches,function(t){i[t.identifier]=W(t)}):i[t.pointerId||0]=W(t),a=Object.keys(i).length>1&&e.zoomable&&e.zoomOnTouch?"zoom":f(t.target,"action"),Q.test(a)&&!1!==y(this.element,"cropstart",{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,"crop"===a&&(this.cropping=!0,p(this.dragBox,"cropper-modal")))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==y(this.element,"cropmove",{originalEvent:t,action:e})&&(t.changedTouches?r(t.changedTouches,function(t){h(i[t.identifier],W(t,!0))}):h(i[t.pointerId||0],W(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?r(t.changedTouches,function(t){delete i[t.identifier]}):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,u(this.dragBox,"cropper-modal",this.cropped&&this.options.modal)),y(this.element,"cropend",{originalEvent:t,action:e}))}}},gt={change:function(t){var e=this.options,i=this.canvasData,a=this.containerData,n=this.cropBoxData,o=this.pointers,h=this.action,s=e.aspectRatio,c=n.left,l=n.top,d=n.width,p=n.height,u=c+d,g=l+p,f=0,v=0,w=a.width,b=a.height,x=!0,y=void 0;!s&&t.shiftKey&&(s=d&&p?d/p:1),this.limited&&(f=n.minLeft,v=n.minTop,w=f+Math.min(a.width,i.width,i.left+i.width),b=v+Math.min(a.height,i.height,i.top+i.height));var C=o[Object.keys(o)[0]],D={x:C.endX-C.startX,y:C.endY-C.startY},B=function(t){switch(t){case"e":u+D.x>w&&(D.x=w-u);break;case"w":c+D.xb&&(D.y=b-g)}};switch(h){case"all":c+=D.x,l+=D.y;break;case"e":if(D.x>=0&&(u>=w||s&&(l<=v||g>=b))){x=!1;break}B("e"),d+=D.x,s&&(p=d/s,l-=D.x/s/2),d<0&&(h="w",d=0);break;case"n":if(D.y<=0&&(l<=v||s&&(c<=f||u>=w))){x=!1;break}B("n"),p-=D.y,l+=D.y,s&&(d=p*s,c+=D.y*s/2),p<0&&(h="s",p=0);break;case"w":if(D.x<=0&&(c<=f||s&&(l<=v||g>=b))){x=!1;break}B("w"),d-=D.x,c+=D.x,s&&(p=d/s,l+=D.x/s/2),d<0&&(h="e",d=0);break;case"s":if(D.y>=0&&(g>=b||s&&(c<=f||u>=w))){x=!1;break}B("s"),p+=D.y,s&&(d=p*s,c-=D.y*s/2),p<0&&(h="n",p=0);break;case"ne":if(s){if(D.y<=0&&(l<=v||u>=w)){x=!1;break}B("n"),p-=D.y,l+=D.y,d=p*s}else B("n"),B("e"),D.x>=0?uv&&(p-=D.y,l+=D.y):(p-=D.y,l+=D.y);d<0&&p<0?(h="sw",p=0,d=0):d<0?(h="nw",d=0):p<0&&(h="se",p=0);break;case"nw":if(s){if(D.y<=0&&(l<=v||c<=f)){x=!1;break}B("n"),p-=D.y,l+=D.y,d=p*s,c+=D.y*s}else B("n"),B("w"),D.x<=0?c>f?(d-=D.x,c+=D.x):D.y<=0&&l<=v&&(x=!1):(d-=D.x,c+=D.x),D.y<=0?l>v&&(p-=D.y,l+=D.y):(p-=D.y,l+=D.y);d<0&&p<0?(h="se",p=0,d=0):d<0?(h="ne",d=0):p<0&&(h="sw",p=0);break;case"sw":if(s){if(D.x<=0&&(c<=f||g>=b)){x=!1;break}B("w"),d-=D.x,c+=D.x,p=d/s}else B("s"),B("w"),D.x<=0?c>f?(d-=D.x,c+=D.x):D.y>=0&&g>=b&&(x=!1):(d-=D.x,c+=D.x),D.y>=0?g=0&&(u>=w||g>=b)){x=!1;break}B("e"),p=(d+=D.x)/s}else B("s"),B("e"),D.x>=0?u=0&&g>=b&&(x=!1):d+=D.x,D.y>=0?g0?h=D.y>0?"se":"ne":D.x<0&&(c-=d,h=D.y>0?"sw":"nw"),D.y<0&&(l-=p),this.cropped||(m(this.cropBox,j),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}x&&(n.width=d,n.height=p,n.left=c,n.top=l,this.action=h,this.renderCropBox()),r(o,function(t){t.startX=t.endX,t.startY=t.endY})}},ft={crop:function(){return this.ready&&!this.disabled&&(this.cropped||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&p(this.dragBox,"cropper-modal"),m(this.cropBox,j)),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=h({},this.initialImageData),this.canvasData=h({},this.initialCanvasData),this.cropBoxData=h({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(h(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),m(this.dragBox,"cropper-modal"),p(this.cropBox,j)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.image2.src=t,r(this.previews,function(e){e.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.load(t))),this},enable:function(){return this.ready&&(this.disabled=!1,m(this.cropper,"cropper-disabled")),this},disable:function(){return this.ready&&(this.disabled=!0,p(this.cropper,"cropper-disabled")),this},destroy:function(){var t=this.element,e=this.image;return this.loaded?(this.isImg&&this.replaced&&(t.src=this.originalUrl),this.unbuild(),m(t,j)):this.isImg?b(t,"load",this.onStart):e&&e.parentNode.removeChild(e),w(t,"cropper"),this},move:function(t,e){var a=this.canvasData,n=a.left,o=a.top;return this.moveTo(i(t)?t:n+Number(t),i(e)?e:o+Number(e))},moveTo:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(e(t)&&(a.left=t,n=!0),e(i)&&(a.top=i,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=Number(t),t=t<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,e)},zoomTo:function(t,e){var i=this.options,a=this.canvasData,n=a.width,o=a.height,r=a.naturalWidth,h=a.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&i.zoomable){var s=r*t,c=h*t;if(!1===y(this.element,"zoom",{originalEvent:e,oldRatio:n/r,ratio:s/r}))return this;if(e){var l=this.pointers,d=M(this.cropper),p=l&&Object.keys(l).length?N(l):{pageX:e.pageX,pageY:e.pageY};a.left-=(s-n)*((p.pageX-d.left-a.left)/n),a.top-=(c-o)*((p.pageY-d.top-a.top)/o)}else a.left-=(s-n)/2,a.top-=(c-o)/2;a.width=s,a.height=c,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),e(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,e(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(e(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(e(t)&&(a.scaleX=t,n=!0),e(i)&&(a.scaleY=i,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.options,i=this.imageData,a=this.canvasData,n=this.cropBoxData,o=void 0;if(this.ready&&this.cropped){o={x:n.left-a.left,y:n.top-a.top,width:n.width,height:n.height};var h=i.width/i.naturalWidth;r(o,function(e,i){e/=h,o[i]=t?Math.round(e):e})}else o={x:0,y:0,width:0,height:0};return e.rotatable&&(o.rotate=i.rotate||0),e.scalable&&(o.scaleX=i.scaleX||1,o.scaleY=i.scaleY||1),o},setData:function(t){var i=this.options,a=this.imageData,r=this.canvasData,h={};if(o(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&n(t)){var s=!1;i.rotatable&&e(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,s=!0),i.scalable&&(e(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,s=!0),e(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,s=!0)),s&&this.renderCanvas(!0,!0);var c=a.width/a.naturalWidth;e(t.x)&&(h.left=t.x*c+r.left),e(t.y)&&(h.top=t.y*c+r.top),e(t.width)&&(h.width=t.width*c),e(t.height)&&(h.height=t.height*c),this.setCropBoxData(h)}return this},getContainerData:function(){return this.ready?h({},this.containerData):{}},getImageData:function(){return this.loaded?h({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&r(["left","top","width","height","naturalWidth","naturalHeight"],function(i){e[i]=t[i]}),e},setCanvasData:function(t){var i=this.canvasData,a=i.aspectRatio;return o(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&n(t)&&(e(t.left)&&(i.left=t.left),e(t.top)&&(i.top=t.top),e(t.width)?(i.width=t.width,i.height=t.width/a):e(t.height)&&(i.height=t.height,i.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,e=void 0;return this.ready&&this.cropped&&(e={left:t.left,top:t.top,width:t.width,height:t.height}),e||{}},setCropBoxData:function(t){var i=this.cropBoxData,a=this.options.aspectRatio,r=void 0,h=void 0;return o(t)&&(t=t.call(this.element)),this.ready&&this.cropped&&!this.disabled&&n(t)&&(e(t.left)&&(i.left=t.left),e(t.top)&&(i.top=t.top),e(t.width)&&t.width!==i.width&&(r=!0,i.width=t.width),e(t.height)&&t.height!==i.height&&(h=!0,i.height=t.height),a&&(r?i.height=i.width/a:h&&(i.width=i.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!U.HTMLCanvasElement)return null;var e=this.canvasData,i=Y(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(),n=a.x,o=a.y,r=a.width,h=a.height,s=r/h,l=H({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),d=H({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0}),p=H({aspectRatio:s,width:t.width||r,height:t.height||h}),m=p.width,u=p.height;m=Math.min(l.width,Math.max(d.width,m)),u=Math.min(l.height,Math.max(d.height,u));var g=document.createElement("canvas"),f=g.getContext("2d");g.width=c(m),g.height=c(u),f.fillStyle=t.fillColor||"transparent",f.fillRect(0,0,m,u);var v=t.imageSmoothingEnabled,w=void 0===v||v,b=t.imageSmoothingQuality;f.imageSmoothingEnabled=w,b&&(f.imageSmoothingQuality=b);var x=i.width,y=i.height,M=n,C=o,D=void 0,B=void 0,k=void 0,E=void 0,T=void 0,W=void 0;M<=-r||M>x?(M=0,D=0,k=0,T=0):M<=0?(k=-M,M=0,T=D=Math.min(x,r+M)):M<=x&&(k=0,T=D=Math.min(r,x-M)),D<=0||C<=-h||C>y?(C=0,B=0,E=0,W=0):C<=0?(E=-C,C=0,W=B=Math.min(y,h+C)):C<=y&&(E=0,W=B=Math.min(h,y-C));var N=[M,C,D,B];if(T>0&&W>0){var L=m/r;N.push(k*L,E*L,T*L,W*L)}return f.drawImage.apply(f,[i].concat(A(N.map(function(t){return Math.floor(c(t))})))),g},setAspectRatio:function(t){var e=this.options;return this.disabled||i(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.loaded&&!this.disabled){var n="crop"===t,o=e.movable&&"move"===t;v(i,"action",t=n||o?t:"none"),u(i,"cropper-crop",n),u(i,"cropper-move",o),e.cropBoxMovable||(v(a,"action",t),u(a,"cropper-crop",n),u(a,"cropper-move",o))}return this}},vt=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(I(this,t),!e||!K.test(e.tagName))throw new Error("The first argument is required and must be an or element.");this.element=e,this.options=h({},V,n(i)&&i),this.complete=!1,this.cropped=!1,this.disabled=!1,this.isImg=!1,this.limited=!1,this.loaded=!1,this.ready=!1,this.replaced=!1,this.wheeling=!1,this.originalUrl="",this.canvasData=null,this.cropBoxData=null,this.previews=null,this.pointers={},this.init()}return vt(t,[{key:"init",value:function(){var t=this.element,e=t.tagName.toLowerCase(),i=void 0;if(!f(t,"cropper")){if(v(t,"cropper",this),"img"===e){if(this.isImg=!0,i=t.getAttribute("src")||"",this.originalUrl=i,!i)return;i=t.src}else"canvas"===e&&U.HTMLCanvasElement&&(i=t.toDataURL());this.load(i)}}},{key:"load",value:function(t){var e=this;if(t){this.url=t,this.imageData={};var i=this.element,a=this.options;if(a.checkOrientation&&U.ArrayBuffer)if(Z.test(t))F.test(t)?this.read(O(t)):this.clone();else{var n=new XMLHttpRequest;n.onerror=function(){e.clone()},n.onload=function(){e.read(n.response)},a.checkCrossOrigin&&D(t)&&i.crossOrigin&&(t=B(t)),n.open("get",t),n.responseType="arraybuffer",n.withCredentials="use-credentials"===i.crossOrigin,n.send()}else this.clone()}}},{key:"read",value:function(t){var e=this.options,i=this.imageData,a=z(t),n=0,o=1,r=1;if(a>1){this.url=S(t,"image/jpeg");var h=R(a);n=h.rotate,o=h.scaleX,r=h.scaleY}e.rotatable&&(i.rotate=n),e.scalable&&(i.scaleX=o,i.scaleY=r),this.clone()}},{key:"clone",value:function(){var t=this.element,e=this.url,i=void 0,a=void 0;this.options.checkCrossOrigin&&D(e)&&((i=t.crossOrigin)?a=e:(i="anonymous",a=B(e))),this.crossOrigin=i,this.crossOriginUrl=a;var n=document.createElement("img");i&&(n.crossOrigin=i),n.src=a||e;var o=s(this.start,this),r=s(this.stop,this);this.image=n,this.onStart=o,this.onStop=r,this.isImg?t.complete?this.start():x(t,"load",o):(x(n,"load",o),x(n,"error",r),p(n,"cropper-hide"),t.parentNode.insertBefore(n,t.nextSibling))}},{key:"start",value:function(t){var e=this,i=this.isImg?this.element:this.image;t&&(b(i,"load",this.onStart),b(i,"error",this.onStop)),E(i,function(t,i){h(e.imageData,{naturalWidth:t,naturalHeight:i,aspectRatio:t/i}),e.loaded=!0,e.build()})}},{key:"stop",value:function(){var t=this.image;b(t,"load",this.onStart),b(t,"error",this.onStop),t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){var t=this;if(this.loaded){this.ready&&this.unbuild();var e=this.element,i=this.options,a=this.image,n=e.parentNode,r=document.createElement("div");r.innerHTML='
';var h=r.querySelector(".cropper-container"),s=h.querySelector(".cropper-canvas"),c=h.querySelector(".cropper-drag-box"),l=h.querySelector(".cropper-crop-box"),d=l.querySelector(".cropper-face");this.container=n,this.cropper=h,this.canvas=s,this.dragBox=c,this.cropBox=l,this.viewBox=h.querySelector(".cropper-view-box"),this.face=d,s.appendChild(a),p(e,j),n.insertBefore(h,e.nextSibling),this.isImg||m(a,"cropper-hide"),this.initPreview(),this.bind(),i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,this.cropped=i.autoCrop,i.autoCrop?i.modal&&p(c,"cropper-modal"):p(l,j),i.guides||p(l.getElementsByClassName("cropper-dashed"),j),i.center||p(l.getElementsByClassName("cropper-center"),j),i.background&&p(h,"cropper-bg"),i.highlight||p(d,"cropper-invisible"),i.cropBoxMovable&&(p(d,"cropper-move"),v(d,"action","all")),i.cropBoxResizable||(p(l.getElementsByClassName("cropper-line"),j),p(l.getElementsByClassName("cropper-point"),j)),this.setDragMode(i.dragMode),this.render(),this.ready=!0,this.setData(i.data),this.completing=setTimeout(function(){o(i.ready)&&x(e,"ready",i.ready,{once:!0}),y(e,"ready"),y(e,"crop",t.getData()),t.complete=!0},0)}}},{key:"unbuild",value:function(){this.ready&&(this.complete||clearTimeout(this.completing),this.ready=!1,this.complete=!1,this.initialImageData=null,this.initialCanvasData=null,this.initialCropBoxData=null,this.containerData=null,this.canvasData=null,this.cropBoxData=null,this.unbind(),this.resetPreview(),this.previews=null,this.viewBox=null,this.cropBox=null,this.dragBox=null,this.canvas=null,this.container=null,this.cropper.parentNode.removeChild(this.cropper),this.cropper=null)}}],[{key:"noConflict",value:function(){return U.Cropper=wt,t}},{key:"setDefaults",value:function(t){h(V,n(t)&&t)}}]),t}();return h(bt.prototype,dt,pt,mt,ut,gt,ft),bt}); \ No newline at end of file +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):t.Cropper=i()}(this,function(){"use strict";function t(t){if(Array.isArray(t)){for(var i=0,e=Array(t.length);i1?i-1:0),n=1;n0){if(Object.assign)return Object.assign.apply(Object,[t].concat(e));e.forEach(function(i){a(i)&&Object.keys(i).forEach(function(e){t[e]=i[e]})})}return t}function s(t,i){for(var e=arguments.length,a=Array(e>2?e-2:0),n=2;n1&&void 0!==arguments[1]?arguments[1]:1e11;return tt.test(t)?Math.round(t*i)/i:t}function l(t,e){var a=t.style;r(e,function(t,e){it.test(e)&&i(t)&&(t+="px"),a[e]=t})}function d(t,i){return t.classList?t.classList.contains(i):t.className.indexOf(i)>-1}function p(t,e){if(e)if(i(t.length))r(t,function(t){p(t,e)});else if(t.classList)t.classList.add(e);else{var a=t.className.trim();a?a.indexOf(e)<0&&(t.className=a+" "+e):t.className=e}}function m(t,e){e&&(i(t.length)?r(t,function(t){m(t,e)}):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function u(t,e,a){e&&(i(t.length)?r(t,function(t){u(t,e,a)}):a?p(t,e):m(t,e))}function g(t){return t.replace(et,"$1-$2").toLowerCase()}function f(t,i){return a(t[i])?t[i]:t.dataset?t.dataset[i]:t.getAttribute("data-"+g(i))}function v(t,i,e){a(e)?t[i]=e:t.dataset?t.dataset[i]=e:t.setAttribute("data-"+g(i),e)}function w(t,i){if(a(t[i]))delete t[i];else if(t.dataset)try{delete t.dataset[i]}catch(e){t.dataset[i]=null}else t.removeAttribute("data-"+g(i))}function b(t,i,e){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(o(e)){var n=i.trim().split(at);n.length>1?r(n,function(i){b(t,i,e)}):(o(e.onceListener)&&delete(e=e.onceListener).onceListener,t.removeEventListener?t.removeEventListener(i,e,a):t.detachEvent&&t.detachEvent("on"+i,e))}}function x(t,i,e){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(o(e)){var n=i.trim().split(at);if(n.length>1)r(n,function(i){x(t,i,e)});else{if(a.once){var h=e,s=function e(){for(var a=arguments.length,n=Array(a),o=0;o0};return n(a)&&n(e)?e*i>a?e=a/i:a=e*i:n(a)?e=a/i:n(e)&&(a=e*i),{width:a,height:e}}function L(t){var i=t.width,e=t.height,a=t.degree;if((a=Math.abs(a))%180==90)return{width:e,height:i};var n=a%90*Math.PI/180,o=Math.sin(n),r=Math.cos(n);return{width:i*r+e*o,height:i*o+e*r}}function Y(i,e,a,n){var o=e.naturalWidth,r=e.naturalHeight,h=e.rotate,s=void 0===h?0:h,l=e.scaleX,d=void 0===l?1:l,p=e.scaleY,m=void 0===p?1:p,u=a.aspectRatio,g=a.naturalWidth,f=a.naturalHeight,v=n.fillColor,w=void 0===v?"transparent":v,b=n.imageSmoothingEnabled,x=void 0===b||b,y=n.imageSmoothingQuality,M=void 0===y?"low":y,C=n.maxWidth,D=void 0===C?1/0:C,B=n.maxHeight,k=void 0===B?1/0:B,E=n.minWidth,T=void 0===E?0:E,W=n.minHeight,N=void 0===W?0:W,L=document.createElement("canvas"),Y=L.getContext("2d"),X=H({aspectRatio:u,width:D,height:k}),O=H({aspectRatio:u,width:T,height:N}),S=Math.min(X.width,Math.max(O.width,g)),z=Math.min(X.height,Math.max(O.height,f)),R=[-o/2,-r/2,o,r];return L.width=c(S),L.height=c(z),Y.fillStyle=w,Y.fillRect(0,0,S,z),Y.save(),Y.translate(S/2,z/2),Y.rotate(s*Math.PI/180),Y.scale(d,m),Y.imageSmoothingEnabled=x,Y.imageSmoothingQuality=M,Y.drawImage.apply(Y,[i].concat(t(R.map(function(t){return Math.floor(c(t))})))),Y.restore(),L}function X(t,i,e){var a="",n=void 0;for(e+=i,n=i;n=8&&(o=s+l)}}}if(o){var d=i.getUint16(o,a),p=void 0,m=void 0;for(m=0;mt.width?3===e?s=t.height*r:c=t.width/r:3===e?c=t.width/r:s=t.height*r;var l={aspectRatio:r,naturalWidth:n,naturalHeight:o,width:s,height:c};l.left=(t.width-s)/2,l.top=(t.height-c)/2,l.oldLeft=l.left,l.oldTop=l.top,this.canvasData=l,this.limited=1===e||2===e,this.limitCanvas(!0,!0),this.initialImageData=h({},i),this.initialCanvasData=h({},l)},limitCanvas:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=e.viewMode,h=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(e.minCanvasWidth)||0,l=Number(e.minCanvasHeight)||0;r>1?(c=Math.max(c,a.width),l=Math.max(l,a.height),3===r&&(l*h>c?c=l*h:l=c/h)):r>0&&(c?c=Math.max(c,s?o.width:0):l?l=Math.max(l,s?o.height:0):s&&(c=o.width,(l=o.height)*h>c?c=l*h:l=c/h));var d=H({aspectRatio:h,width:c,height:l});c=d.width,l=d.height,n.minWidth=c,n.minHeight=l,n.maxWidth=1/0,n.maxHeight=1/0}if(i)if(r){var p=a.width-n.width,m=a.height-n.height;n.minLeft=Math.min(0,p),n.minTop=Math.min(0,m),n.maxLeft=Math.max(0,p),n.maxTop=Math.max(0,m),s&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===r&&(n.width>=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,i){var e=this.canvasData,a=this.imageData;if(i){var n=L({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),o=n.width,r=n.height,s=e.width*(o/e.naturalWidth),c=e.height*(r/e.naturalHeight);e.left-=(s-e.width)/2,e.top-=(c-e.height)/2,e.width=s,e.height=c,e.aspectRatio=o/r,e.naturalWidth=o,e.naturalHeight=r,this.limitCanvas(!0,!1)}(e.width>e.maxWidth||e.widthe.maxHeight||e.heighti.width?n.height=n.width/e:n.width=n.height*e),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=i.left+(i.width-n.width)/2,n.top=i.top+(i.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=h({},n)},limitCropBox:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=this.limited,h=e.aspectRatio;if(t){var s=Number(e.minCropBoxWidth)||0,c=Number(e.minCropBoxHeight)||0,l=Math.min(a.width,r?n.width:a.width),d=Math.min(a.height,r?n.height:a.height);s=Math.min(s,a.width),c=Math.min(c,a.height),h&&(s&&c?c*h>s?c=s/h:s=c*h:s?c=s/h:c&&(s=c*h),d*h>l?d=l/h:l=d*h),o.minWidth=Math.min(s,l),o.minHeight=Math.min(c,d),o.maxWidth=l,o.maxHeight=d}i&&(r?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,e=this.cropBoxData;(e.width>e.maxWidth||e.widthe.maxHeight||e.height=i.width&&e.height>=i.height?"move":"all"),l(this.cropBox,h({width:e.width,height:e.height},k({translateX:e.left,translateY:e.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),this.complete&&y(this.element,"crop",this.getData())}},pt={initPreview:function(){var t=this.crossOrigin,i=this.options.preview,e=t?this.crossOriginUrl:this.url,a=document.createElement("img");if(t&&(a.crossOrigin=t),a.src=e,this.viewBox.appendChild(a),this.image2=a,i){var n=i.querySelector?[i]:document.querySelectorAll(i);this.previews=n,r(n,function(i){var a=document.createElement("img");v(i,"preview",{width:i.offsetWidth,height:i.offsetHeight,html:i.innerHTML}),t&&(a.crossOrigin=t),a.src=e,a.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;"',C(i),i.appendChild(a)})}},resetPreview:function(){r(this.previews,function(t){var i=f(t,"preview");l(t,{width:i.width,height:i.height}),t.innerHTML=i.html,w(t,"preview")})},preview:function(){var t=this.imageData,i=this.canvasData,e=this.cropBoxData,a=e.width,n=e.height,o=t.width,s=t.height,c=e.left-i.left-t.left,d=e.top-i.top-t.top;this.cropped&&!this.disabled&&(l(this.image2,h({width:o,height:s},k(h({translateX:-c,translateY:-d},t)))),r(this.previews,function(i){var e=f(i,"preview"),r=e.width,p=e.height,m=r,u=p,g=1;a&&(u=n*(g=r/a)),n&&u>p&&(m=a*(g=p/n),u=p),l(i,{width:m,height:u}),l(i.getElementsByTagName("img")[0],h({width:o*g,height:s*g},k(h({translateX:-c*g,translateY:-d*g},t))))}))}},mt={bind:function(){var t=this.element,i=this.options,e=this.cropper;o(i.cropstart)&&x(t,"cropstart",i.cropstart),o(i.cropmove)&&x(t,"cropmove",i.cropmove),o(i.cropend)&&x(t,"cropend",i.cropend),o(i.crop)&&x(t,"crop",i.crop),o(i.zoom)&&x(t,"zoom",i.zoom),x(e,P,this.onCropStart=s(this.cropStart,this)),i.zoomable&&i.zoomOnWheel&&x(e,"wheel mousewheel DOMMouseScroll",this.onWheel=s(this.wheel,this)),i.toggleDragModeOnDblclick&&x(e,"dblclick",this.onDblclick=s(this.dblclick,this)),x(document,q,this.onCropMove=s(this.cropMove,this)),x(document,$,this.onCropEnd=s(this.cropEnd,this)),i.responsive&&x(window,"resize",this.onResize=s(this.resize,this))},unbind:function(){var t=this.element,i=this.options,e=this.cropper;o(i.cropstart)&&b(t,"cropstart",i.cropstart),o(i.cropmove)&&b(t,"cropmove",i.cropmove),o(i.cropend)&&b(t,"cropend",i.cropend),o(i.crop)&&b(t,"crop",i.crop),o(i.zoom)&&b(t,"zoom",i.zoom),b(e,P,this.onCropStart),i.zoomable&&i.zoomOnWheel&&b(e,"wheel mousewheel DOMMouseScroll",this.onWheel),i.toggleDragModeOnDblclick&&b(e,"dblclick",this.onDblclick),b(document,q,this.onCropMove),b(document,$,this.onCropEnd),i.responsive&&b(window,"resize",this.onResize)}},ut={resize:function(){var t=this.options,i=this.container,e=this.containerData,a=Number(t.minContainerWidth)||200,n=Number(t.minContainerHeight)||100;if(!(this.disabled||e.width<=a||e.height<=n)){var o=i.offsetWidth/e.width;if(1!==o||i.offsetHeight!==e.height){var h=void 0,s=void 0;t.restore&&(h=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(r(h,function(t,i){h[i]=t*o})),this.setCropBoxData(r(s,function(t,i){s[i]=t*o})))}}},dblclick:function(){this.disabled||"none"===this.options.dragMode||this.setDragMode(d(this.dragBox,"cropper-crop")?"move":"crop")},wheel:function(t){var i=this,e=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*e,t)))},cropStart:function(t){if(!this.disabled){var i=this.options,e=this.pointers,a=void 0;t.changedTouches?r(t.changedTouches,function(t){e[t.identifier]=W(t)}):e[t.pointerId||0]=W(t),a=Object.keys(e).length>1&&i.zoomable&&i.zoomOnTouch?"zoom":f(t.target,"action"),Q.test(a)&&!1!==y(this.element,"cropstart",{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,"crop"===a&&(this.cropping=!0,p(this.dragBox,"cropper-modal")))}},cropMove:function(t){var i=this.action;if(!this.disabled&&i){var e=this.pointers;t.preventDefault(),!1!==y(this.element,"cropmove",{originalEvent:t,action:i})&&(t.changedTouches?r(t.changedTouches,function(t){h(e[t.identifier],W(t,!0))}):h(e[t.pointerId||0],W(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,e=this.pointers;t.changedTouches?r(t.changedTouches,function(t){delete e[t.identifier]}):delete e[t.pointerId||0],i&&(t.preventDefault(),Object.keys(e).length||(this.action=""),this.cropping&&(this.cropping=!1,u(this.dragBox,"cropper-modal",this.cropped&&this.options.modal)),y(this.element,"cropend",{originalEvent:t,action:i}))}}},gt={change:function(t){var i=this.options,e=this.canvasData,a=this.containerData,n=this.cropBoxData,o=this.pointers,h=this.action,s=i.aspectRatio,c=n.left,l=n.top,d=n.width,p=n.height,u=c+d,g=l+p,f=0,v=0,w=a.width,b=a.height,x=!0,y=void 0;!s&&t.shiftKey&&(s=d&&p?d/p:1),this.limited&&(f=n.minLeft,v=n.minTop,w=f+Math.min(a.width,e.width,e.left+e.width),b=v+Math.min(a.height,e.height,e.top+e.height));var C=o[Object.keys(o)[0]],D={x:C.endX-C.startX,y:C.endY-C.startY},B=function(t){switch(t){case"e":u+D.x>w&&(D.x=w-u);break;case"w":c+D.xb&&(D.y=b-g)}};switch(h){case"all":c+=D.x,l+=D.y;break;case"e":if(D.x>=0&&(u>=w||s&&(l<=v||g>=b))){x=!1;break}B("e"),d+=D.x,s&&(p=d/s,l-=D.x/s/2),d<0&&(h="w",d=0);break;case"n":if(D.y<=0&&(l<=v||s&&(c<=f||u>=w))){x=!1;break}B("n"),p-=D.y,l+=D.y,s&&(d=p*s,c+=D.y*s/2),p<0&&(h="s",p=0);break;case"w":if(D.x<=0&&(c<=f||s&&(l<=v||g>=b))){x=!1;break}B("w"),d-=D.x,c+=D.x,s&&(p=d/s,l+=D.x/s/2),d<0&&(h="e",d=0);break;case"s":if(D.y>=0&&(g>=b||s&&(c<=f||u>=w))){x=!1;break}B("s"),p+=D.y,s&&(d=p*s,c-=D.y*s/2),p<0&&(h="n",p=0);break;case"ne":if(s){if(D.y<=0&&(l<=v||u>=w)){x=!1;break}B("n"),p-=D.y,l+=D.y,d=p*s}else B("n"),B("e"),D.x>=0?uv&&(p-=D.y,l+=D.y):(p-=D.y,l+=D.y);d<0&&p<0?(h="sw",p=0,d=0):d<0?(h="nw",d=0):p<0&&(h="se",p=0);break;case"nw":if(s){if(D.y<=0&&(l<=v||c<=f)){x=!1;break}B("n"),p-=D.y,l+=D.y,d=p*s,c+=D.y*s}else B("n"),B("w"),D.x<=0?c>f?(d-=D.x,c+=D.x):D.y<=0&&l<=v&&(x=!1):(d-=D.x,c+=D.x),D.y<=0?l>v&&(p-=D.y,l+=D.y):(p-=D.y,l+=D.y);d<0&&p<0?(h="se",p=0,d=0):d<0?(h="ne",d=0):p<0&&(h="sw",p=0);break;case"sw":if(s){if(D.x<=0&&(c<=f||g>=b)){x=!1;break}B("w"),d-=D.x,c+=D.x,p=d/s}else B("s"),B("w"),D.x<=0?c>f?(d-=D.x,c+=D.x):D.y>=0&&g>=b&&(x=!1):(d-=D.x,c+=D.x),D.y>=0?g=0&&(u>=w||g>=b)){x=!1;break}B("e"),p=(d+=D.x)/s}else B("s"),B("e"),D.x>=0?u=0&&g>=b&&(x=!1):d+=D.x,D.y>=0?g0?h=D.y>0?"se":"ne":D.x<0&&(c-=d,h=D.y>0?"sw":"nw"),D.y<0&&(l-=p),this.cropped||(m(this.cropBox,j),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}x&&(n.width=d,n.height=p,n.left=c,n.top=l,this.action=h,this.renderCropBox()),r(o,function(t){t.startX=t.endX,t.startY=t.endY})}},ft={crop:function(){return this.ready&&!this.disabled&&(this.cropped||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&p(this.dragBox,"cropper-modal"),m(this.cropBox,j)),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=h({},this.initialImageData),this.canvasData=h({},this.initialCanvasData),this.cropBoxData=h({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(h(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),m(this.dragBox,"cropper-modal"),p(this.cropBox,j)),this},replace:function(t){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.image2.src=t,r(this.previews,function(i){i.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.load(t))),this},enable:function(){return this.ready&&(this.disabled=!1,m(this.cropper,"cropper-disabled")),this},disable:function(){return this.ready&&(this.disabled=!0,p(this.cropper,"cropper-disabled")),this},destroy:function(){var t=this.element,i=this.image;return this.loaded?(this.isImg&&this.replaced&&(t.src=this.originalUrl),this.unbuild(),m(t,j)):this.isImg?b(t,"load",this.onStart):i&&i.parentNode.removeChild(i),w(t,"cropper"),this},move:function(t,i){var a=this.canvasData,n=a.left,o=a.top;return this.moveTo(e(t)?t:n+Number(t),e(i)?i:o+Number(i))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(i(t)&&(a.left=t,n=!0),i(e)&&(a.top=e,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,i){var e=this.canvasData;return t=Number(t),t=t<0?1/(1-t):1+t,this.zoomTo(e.width*t/e.naturalWidth,i)},zoomTo:function(t,i){var e=this.options,a=this.canvasData,n=a.width,o=a.height,r=a.naturalWidth,h=a.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&e.zoomable){var s=r*t,c=h*t;if(!1===y(this.element,"zoom",{originalEvent:i,oldRatio:n/r,ratio:s/r}))return this;if(i){var l=this.pointers,d=M(this.cropper),p=l&&Object.keys(l).length?N(l):{pageX:i.pageX,pageY:i.pageY};a.left-=(s-n)*((p.pageX-d.left-a.left)/n),a.top-=(c-o)*((p.pageY-d.top-a.top)/o)}else a.left-=(s-n)/2,a.top-=(c-o)/2;a.width=s,a.height=c,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),i(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,i(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(i(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(i(t)&&(a.scaleX=t,n=!0),i(e)&&(a.scaleY=e,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,e=this.imageData,a=this.canvasData,n=this.cropBoxData,o=void 0;if(this.ready&&this.cropped){o={x:n.left-a.left,y:n.top-a.top,width:n.width,height:n.height};var h=e.width/e.naturalWidth;r(o,function(i,e){i/=h,o[e]=t?Math.round(i):i})}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=e.rotate||0),i.scalable&&(o.scaleX=e.scaleX||1,o.scaleY=e.scaleY||1),o},setData:function(t){var e=this.options,a=this.imageData,r=this.canvasData,h={};if(o(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&n(t)){var s=!1;e.rotatable&&i(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,s=!0),e.scalable&&(i(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,s=!0),i(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,s=!0)),s&&this.renderCanvas(!0,!0);var c=a.width/a.naturalWidth;i(t.x)&&(h.left=t.x*c+r.left),i(t.y)&&(h.top=t.y*c+r.top),i(t.width)&&(h.width=t.width*c),i(t.height)&&(h.height=t.height*c),this.setCropBoxData(h)}return this},getContainerData:function(){return this.ready?h({},this.containerData):{}},getImageData:function(){return this.loaded?h({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&r(["left","top","width","height","naturalWidth","naturalHeight"],function(e){i[e]=t[e]}),i},setCanvasData:function(t){var e=this.canvasData,a=e.aspectRatio;return o(t)&&(t=t.call(this.element)),this.ready&&!this.disabled&&n(t)&&(i(t.left)&&(e.left=t.left),i(t.top)&&(e.top=t.top),i(t.width)?(e.width=t.width,e.height=t.width/a):i(t.height)&&(e.height=t.height,e.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i=void 0;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var e=this.cropBoxData,a=this.options.aspectRatio,r=void 0,h=void 0;return o(t)&&(t=t.call(this.element)),this.ready&&this.cropped&&!this.disabled&&n(t)&&(i(t.left)&&(e.left=t.left),i(t.top)&&(e.top=t.top),i(t.width)&&t.width!==e.width&&(r=!0,e.width=t.width),i(t.height)&&t.height!==e.height&&(h=!0,e.height=t.height),a&&(r?e.height=e.width/a:h&&(e.width=e.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,e=Y(this.image,this.imageData,i,t);if(!this.cropped)return e;var a=this.getData(),n=a.x,o=a.y,r=a.width,h=a.height,s=r/h,l=H({aspectRatio:s,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),d=H({aspectRatio:s,width:t.minWidth||0,height:t.minHeight||0}),p=H({aspectRatio:s,width:t.width||r,height:t.height||h}),m=p.width,u=p.height;m=Math.min(l.width,Math.max(d.width,m)),u=Math.min(l.height,Math.max(d.height,u));var g=document.createElement("canvas"),f=g.getContext("2d");g.width=c(m),g.height=c(u),f.fillStyle=t.fillColor||"transparent",f.fillRect(0,0,m,u);var v=t.imageSmoothingEnabled,w=void 0===v||v,b=t.imageSmoothingQuality;f.imageSmoothingEnabled=w,b&&(f.imageSmoothingQuality=b);var x=e.width,y=e.height,M=n,C=o,D=void 0,B=void 0,k=void 0,E=void 0,T=void 0,W=void 0;M<=-r||M>x?(M=0,D=0,k=0,T=0):M<=0?(k=-M,M=0,T=D=Math.min(x,r+M)):M<=x&&(k=0,T=D=Math.min(r,x-M)),D<=0||C<=-h||C>y?(C=0,B=0,E=0,W=0):C<=0?(E=-C,C=0,W=B=Math.min(y,h+C)):C<=y&&(E=0,W=B=Math.min(h,y-C));var N=[M,C,D,B];if(T>0&&W>0){var L=m/r;N.push(k*L,E*L,T*L,W*L)}return f.drawImage.apply(f,[e].concat(A(N.map(function(t){return Math.floor(c(t))})))),g},setAspectRatio:function(t){var i=this.options;return this.disabled||e(t)||(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,e=this.dragBox,a=this.face;if(this.loaded&&!this.disabled){var n="crop"===t,o=i.movable&&"move"===t;v(e,"action",t=n||o?t:"none"),u(e,"cropper-crop",n),u(e,"cropper-move",o),i.cropBoxMovable||(v(a,"action",t),u(a,"cropper-crop",n),u(a,"cropper-move",o))}return this}},vt=function(){function t(t,i){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{};if(I(this,t),!i||!K.test(i.tagName))throw new Error("The first argument is required and must be an or element.");this.element=i,this.options=h({},V,n(e)&&e),this.complete=!1,this.cropped=!1,this.disabled=!1,this.isImg=!1,this.limited=!1,this.loaded=!1,this.ready=!1,this.replaced=!1,this.wheeling=!1,this.originalUrl="",this.canvasData=null,this.cropBoxData=null,this.previews=null,this.pointers={},this.init()}return vt(t,[{key:"init",value:function(){var t=this.element,i=t.tagName.toLowerCase(),e=void 0;if(!f(t,"cropper")){if(v(t,"cropper",this),"img"===i){if(this.isImg=!0,e=t.getAttribute("src")||"",this.originalUrl=e,!e)return;e=t.src}else"canvas"===i&&window.HTMLCanvasElement&&(e=t.toDataURL());this.load(e)}}},{key:"load",value:function(t){var i=this;if(t){this.url=t,this.imageData={};var e=this.element,a=this.options;if(a.checkOrientation&&window.ArrayBuffer)if(Z.test(t))F.test(t)?this.read(O(t)):this.clone();else{var n=new XMLHttpRequest;n.onerror=function(){i.clone()},n.onload=function(){i.read(n.response)},a.checkCrossOrigin&&D(t)&&e.crossOrigin&&(t=B(t)),n.open("get",t),n.responseType="arraybuffer",n.withCredentials="use-credentials"===e.crossOrigin,n.send()}else this.clone()}}},{key:"read",value:function(t){var i=this.options,e=this.imageData,a=z(t),n=0,o=1,r=1;if(a>1){this.url=S(t,"image/jpeg");var h=R(a);n=h.rotate,o=h.scaleX,r=h.scaleY}i.rotatable&&(e.rotate=n),i.scalable&&(e.scaleX=o,e.scaleY=r),this.clone()}},{key:"clone",value:function(){var t=this.element,i=this.url,e=void 0,a=void 0;this.options.checkCrossOrigin&&D(i)&&((e=t.crossOrigin)?a=i:(e="anonymous",a=B(i))),this.crossOrigin=e,this.crossOriginUrl=a;var n=document.createElement("img");e&&(n.crossOrigin=e),n.src=a||i;var o=s(this.start,this),r=s(this.stop,this);this.image=n,this.onStart=o,this.onStop=r,this.isImg?t.complete?this.start():x(t,"load",o):(x(n,"load",o),x(n,"error",r),p(n,"cropper-hide"),t.parentNode.insertBefore(n,t.nextSibling))}},{key:"start",value:function(t){var i=this,e=this.isImg?this.element:this.image;t&&(b(e,"load",this.onStart),b(e,"error",this.onStop)),E(e,function(t,e){h(i.imageData,{naturalWidth:t,naturalHeight:e,aspectRatio:t/e}),i.loaded=!0,i.build()})}},{key:"stop",value:function(){var t=this.image;b(t,"load",this.onStart),b(t,"error",this.onStop),t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){var t=this;if(this.loaded){this.ready&&this.unbuild();var i=this.element,e=this.options,a=this.image,n=i.parentNode,r=document.createElement("div");r.innerHTML='
';var h=r.querySelector(".cropper-container"),s=h.querySelector(".cropper-canvas"),c=h.querySelector(".cropper-drag-box"),l=h.querySelector(".cropper-crop-box"),d=l.querySelector(".cropper-face");this.container=n,this.cropper=h,this.canvas=s,this.dragBox=c,this.cropBox=l,this.viewBox=h.querySelector(".cropper-view-box"),this.face=d,s.appendChild(a),p(i,j),n.insertBefore(h,i.nextSibling),this.isImg||m(a,"cropper-hide"),this.initPreview(),this.bind(),e.aspectRatio=Math.max(0,e.aspectRatio)||NaN,e.viewMode=Math.max(0,Math.min(3,Math.round(e.viewMode)))||0,this.cropped=e.autoCrop,e.autoCrop?e.modal&&p(c,"cropper-modal"):p(l,j),e.guides||p(l.getElementsByClassName("cropper-dashed"),j),e.center||p(l.getElementsByClassName("cropper-center"),j),e.background&&p(h,"cropper-bg"),e.highlight||p(d,"cropper-invisible"),e.cropBoxMovable&&(p(d,"cropper-move"),v(d,"action","all")),e.cropBoxResizable||(p(l.getElementsByClassName("cropper-line"),j),p(l.getElementsByClassName("cropper-point"),j)),this.setDragMode(e.dragMode),this.render(),this.ready=!0,this.setData(e.data),this.completing=setTimeout(function(){o(e.ready)&&x(i,"ready",e.ready,{once:!0}),y(i,"ready"),y(i,"crop",t.getData()),t.complete=!0},0)}}},{key:"unbuild",value:function(){this.ready&&(this.complete||clearTimeout(this.completing),this.ready=!1,this.complete=!1,this.initialImageData=null,this.initialCanvasData=null,this.initialCropBoxData=null,this.containerData=null,this.canvasData=null,this.cropBoxData=null,this.unbind(),this.resetPreview(),this.previews=null,this.viewBox=null,this.cropBox=null,this.dragBox=null,this.canvas=null,this.container=null,this.cropper.parentNode.removeChild(this.cropper),this.cropper=null)}}],[{key:"noConflict",value:function(){return window.Cropper=wt,t}},{key:"setDefaults",value:function(t){h(V,n(t)&&t)}}]),t}();return h(bt.prototype,dt,pt,mt,ut,gt,ft),bt}); \ No newline at end of file diff --git a/docs/css/cropper.css b/docs/css/cropper.css index b9580614e..abe485d24 100644 --- a/docs/css/cropper.css +++ b/docs/css/cropper.css @@ -1,11 +1,11 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:26:08.981Z + * Date: 2017-10-21T09:27:29.883Z */ .cropper-container { diff --git a/docs/index.html b/docs/index.html index 13276e3fa..3c5587b80 100644 --- a/docs/index.html +++ b/docs/index.html @@ -47,7 +47,7 @@
-

Cropper.js v1.1.2

+

Cropper.js v1.1.3

JavaScript image cropper.

diff --git a/docs/js/cropper.js b/docs/js/cropper.js index 7ae4385bb..1a074f8e3 100644 --- a/docs/js/cropper.js +++ b/docs/js/cropper.js @@ -1,11 +1,11 @@ /*! - * Cropper.js v1.1.2 + * Cropper.js v1.1.3 * https://github.com/fengyuanchen/cropperjs * * Copyright (c) 2015-2017 Chen Fengyuan * Released under the MIT license * - * Date: 2017-10-18T13:27:02.189Z + * Date: 2017-10-21T09:27:36.848Z */ (function (global, factory) { @@ -14,8 +14,7 @@ (global.Cropper = factory()); }(this, (function () { 'use strict'; -var global = typeof window !== 'undefined' ? window : {}; - +var WINDOW = typeof window !== 'undefined' ? window : {}; var NAMESPACE = 'cropper'; // Actions @@ -58,9 +57,9 @@ var EVENT_CROP_START = 'cropstart'; var EVENT_DBLCLICK = 'dblclick'; var EVENT_ERROR = 'error'; var EVENT_LOAD = 'load'; -var EVENT_POINTER_DOWN = global.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; -var EVENT_POINTER_MOVE = global.PointerEvent ? 'pointermove' : 'touchmove mousemove'; -var EVENT_POINTER_UP = global.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; +var EVENT_POINTER_DOWN = WINDOW.PointerEvent ? 'pointerdown' : 'touchstart mousedown'; +var EVENT_POINTER_MOVE = WINDOW.PointerEvent ? 'pointermove' : 'touchmove mousemove'; +var EVENT_POINTER_UP = WINDOW.PointerEvent ? ' pointerup pointercancel' : 'touchend touchcancel mouseup'; var EVENT_READY = 'ready'; var EVENT_RESIZE = 'resize'; var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll'; @@ -177,7 +176,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr /** * Check if the given value is not a number. */ -var isNaN = Number.isNaN || global.isNaN; +var isNaN = Number.isNaN || WINDOW.isNaN; /** * Check if the given value is a number. @@ -641,8 +640,8 @@ function getOffset(element) { var box = element.getBoundingClientRect(); return { - left: box.left + ((global.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), - top: box.top + ((global.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) + left: box.left + ((window.scrollX || doc && doc.scrollLeft || 0) - (doc && doc.clientLeft || 0)), + top: box.top + ((window.scrollY || doc && doc.scrollTop || 0) - (doc && doc.clientTop || 0)) }; } @@ -656,7 +655,7 @@ function empty(element) { } } -var location = global.location; +var location = WINDOW.location; var REGEXP_ORIGINS = /^(https?:)\/\/([^:/?#]+):?(\d*)/i; @@ -726,7 +725,7 @@ function getTransforms(_ref) { }; } -var navigator = global.navigator; +var navigator = WINDOW.navigator; var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent); @@ -839,7 +838,7 @@ function getPointersCenter(pointers) { /** * Check if the given value is a finite number. */ -var isFinite = Number.isFinite || global.isFinite; +var isFinite = Number.isFinite || WINDOW.isFinite; /** * Get the max sizes in a rectangle under the given aspect ratio. @@ -913,9 +912,12 @@ function getRotatedSizes(_ref5) { function getSourceCanvas(image, _ref6, _ref7, _ref8) { var imageNaturalWidth = _ref6.naturalWidth, imageNaturalHeight = _ref6.naturalHeight, - rotate = _ref6.rotate, - scaleX = _ref6.scaleX, - scaleY = _ref6.scaleY; + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === undefined ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === undefined ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === undefined ? 1 : _ref6$scaleY; var aspectRatio = _ref7.aspectRatio, naturalWidth = _ref7.naturalWidth, naturalHeight = _ref7.naturalHeight; @@ -1342,9 +1344,9 @@ var render = { if (transformed) { var _getRotatedSizes = getRotatedSizes({ - width: imageData.naturalWidth * Math.abs(imageData.scaleX), - height: imageData.naturalHeight * Math.abs(imageData.scaleY), - degree: imageData.rotate + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 }), naturalWidth = _getRotatedSizes.width, naturalHeight = _getRotatedSizes.height; @@ -1734,7 +1736,7 @@ var events = { addListener(document, EVENT_POINTER_UP, this.onCropEnd = proxy(this.cropEnd, this)); if (options.responsive) { - addListener(global, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); + addListener(window, EVENT_RESIZE, this.onResize = proxy(this.resize, this)); } }, unbind: function unbind() { @@ -1777,7 +1779,7 @@ var events = { removeListener(document, EVENT_POINTER_UP, this.onCropEnd); if (options.responsive) { - removeListener(global, EVENT_RESIZE, this.onResize); + removeListener(window, EVENT_RESIZE, this.onResize); } } }; @@ -3053,7 +3055,7 @@ var methods = { getCroppedCanvas: function getCroppedCanvas() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (!this.ready || !global.HTMLCanvasElement) { + if (!this.ready || !window.HTMLCanvasElement) { return null; } @@ -3245,7 +3247,7 @@ var _createClass = function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var AnotherCropper = global.Cropper; +var AnotherCropper = WINDOW.Cropper; var Cropper = function () { /** @@ -3309,7 +3311,7 @@ var Cropper = function () { // e.g.: "http://example.com/img/picture.jpg" url = element.src; - } else if (tagName === 'canvas' && global.HTMLCanvasElement) { + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { url = element.toDataURL(); } @@ -3331,7 +3333,7 @@ var Cropper = function () { options = this.options; - if (!options.checkOrientation || !global.ArrayBuffer) { + if (!options.checkOrientation || !window.ArrayBuffer) { this.clone(); return; } @@ -3641,7 +3643,7 @@ var Cropper = function () { }], [{ key: 'noConflict', value: function noConflict() { - global.Cropper = AnotherCropper; + window.Cropper = AnotherCropper; return Cropper; } diff --git a/docs/js/main.js b/docs/js/main.js index 91de60bf5..8b2964fb0 100644 --- a/docs/js/main.js +++ b/docs/js/main.js @@ -16,36 +16,36 @@ window.onload = function () { var dataScaleX = document.getElementById('dataScaleX'); var dataScaleY = document.getElementById('dataScaleY'); var options = { - aspectRatio: 321 / 180, - preview: '.img-preview', - ready: function (e) { - console.log(e.type); - }, - cropstart: function (e) { - console.log(e.type, e.detail.action); - }, - cropmove: function (e) { - console.log(e.type, e.detail.action); - }, - cropend: function (e) { - console.log(e.type, e.detail.action); - }, - crop: function (e) { - var data = e.detail; - - console.log(e.type); - dataX.value = Math.round(data.x); - dataY.value = Math.round(data.y); - dataHeight.value = Math.round(data.height); - dataWidth.value = Math.round(data.width); - dataRotate.value = typeof data.rotate !== 'undefined' ? data.rotate : ''; - dataScaleX.value = typeof data.scaleX !== 'undefined' ? data.scaleX : ''; - dataScaleY.value = typeof data.scaleY !== 'undefined' ? data.scaleY : ''; - }, - zoom: function (e) { - console.log(e.type, e.detail.ratio); - } - }; + aspectRatio: 321 / 180, + preview: '.img-preview', + ready: function (e) { + console.log(e.type); + }, + cropstart: function (e) { + console.log(e.type, e.detail.action); + }, + cropmove: function (e) { + console.log(e.type, e.detail.action); + }, + cropend: function (e) { + console.log(e.type, e.detail.action); + }, + crop: function (e) { + var data = e.detail; + + console.log(e.type); + dataX.value = Math.round(data.x); + dataY.value = Math.round(data.y); + dataHeight.value = Math.round(data.height); + dataWidth.value = Math.round(data.width); + dataRotate.value = typeof data.rotate !== 'undefined' ? data.rotate : ''; + dataScaleX.value = typeof data.scaleX !== 'undefined' ? data.scaleX : ''; + dataScaleY.value = typeof data.scaleY !== 'undefined' ? data.scaleY : ''; + }, + zoom: function (e) { + console.log(e.type, e.detail.ratio); + } + }; var cropper = new Cropper(image, options); var originalImageURL = image.src; var uploadedImageType = 'image/jpeg'; @@ -54,7 +54,6 @@ window.onload = function () { // Tooltip $('[data-toggle="tooltip"]').tooltip(); - // Buttons if (!document.createElement('canvas').getContext) { $('button[data-method="getCroppedCanvas"]').prop('disabled', true); @@ -65,13 +64,11 @@ window.onload = function () { $('button[data-method="scale"]').prop('disabled', true); } - // Download if (typeof download.download === 'undefined') { download.className += ' disabled'; } - // Options actions.querySelector('.docs-toggles').onchange = function (event) { var e = event || window.event; @@ -115,7 +112,6 @@ window.onload = function () { } }; - // Methods actions.querySelector('.docs-buttons').onclick = function (event) { var e = event || window.event; @@ -268,7 +264,6 @@ window.onload = function () { } }; - // Import image var inputImage = document.getElementById('inputImage'); diff --git a/package-lock.json b/package-lock.json index a7ecfe4b9..75ec74fcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cropperjs", - "version": "1.1.2", + "version": "1.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2041,9 +2041,9 @@ } }, "eslint-plugin-import": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", - "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", "dev": true, "requires": { "builtin-modules": "1.1.1", @@ -3653,22 +3653,57 @@ } }, "node-qunit-phantomjs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/node-qunit-phantomjs/-/node-qunit-phantomjs-1.5.0.tgz", - "integrity": "sha1-1q8tGR2JLJXoxAoTOtMIPwbVyyA=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/node-qunit-phantomjs/-/node-qunit-phantomjs-1.5.1.tgz", + "integrity": "sha512-fHg/GFvS+GtMvkcGi2AAVJ97F1SP0XQolqX1ITYwFbBPVULg8JHer8z3wsegDeRWTGu1/R/tcnc8+9nNjXVEQA==", "dev": true, "requires": { - "chalk": "1.1.3", + "chalk": "2.2.0", "minimist": "1.2.0", "phantomjs-prebuilt": "2.1.15", "qunit-phantomjs-runner": "2.3.0" }, "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, diff --git a/package.json b/package.json index cf12a2165..b6dbf1ee6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cropperjs", "description": "JavaScript image cropper.", - "version": "1.1.2", + "version": "1.1.3", "main": "dist/cropper.common.js", "module": "dist/cropper.esm.js", "browser": "dist/cropper.js", @@ -56,8 +56,8 @@ "cssnano": "^3.10.0", "eslint": "^4.9.0", "eslint-config-airbnb-base": "^12.1.0", - "eslint-plugin-import": "^2.7.0", - "node-qunit-phantomjs": "^1.5.0", + "eslint-plugin-import": "^2.8.0", + "node-qunit-phantomjs": "^1.5.1", "npm-run-all": "^4.1.1", "postcss-cli": "^4.1.1", "postcss-cssnext": "^3.0.2",