compressorjs 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/compressor.common.js +5 -2
- package/dist/compressor.esm.js +5 -2
- package/dist/compressor.js +5 -2
- package/dist/compressor.min.js +3 -3
- package/package.json +4 -4
- package/dist/compressor.common.js.map +0 -1
- package/dist/compressor.esm.js.map +0 -1
- package/dist/compressor.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Compressor.js v1.1.
|
|
2
|
+
* Compressor.js v1.1.1
|
|
3
3
|
* https://fengyuanchen.github.io/compressorjs
|
|
4
4
|
*
|
|
5
5
|
* Copyright 2018-present Chen Fengyuan
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
*
|
|
8
|
-
* Date: 2021-10-
|
|
8
|
+
* Date: 2021-10-05T02:32:40.212Z
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
@@ -120,6 +120,9 @@ var canvasToBlob = {exports: {}};
|
|
|
120
120
|
*/
|
|
121
121
|
|
|
122
122
|
(function (module) {
|
|
123
|
+
if (typeof window === 'undefined') {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
123
126
|
|
|
124
127
|
(function (window) {
|
|
125
128
|
|
package/dist/compressor.esm.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Compressor.js v1.1.
|
|
2
|
+
* Compressor.js v1.1.1
|
|
3
3
|
* https://fengyuanchen.github.io/compressorjs
|
|
4
4
|
*
|
|
5
5
|
* Copyright 2018-present Chen Fengyuan
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
*
|
|
8
|
-
* Date: 2021-10-
|
|
8
|
+
* Date: 2021-10-05T02:32:40.212Z
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
function ownKeys(object, enumerableOnly) {
|
|
@@ -118,6 +118,9 @@ var canvasToBlob = {exports: {}};
|
|
|
118
118
|
*/
|
|
119
119
|
|
|
120
120
|
(function (module) {
|
|
121
|
+
if (typeof window === 'undefined') {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
121
124
|
|
|
122
125
|
(function (window) {
|
|
123
126
|
|
package/dist/compressor.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Compressor.js v1.1.
|
|
2
|
+
* Compressor.js v1.1.1
|
|
3
3
|
* https://fengyuanchen.github.io/compressorjs
|
|
4
4
|
*
|
|
5
5
|
* Copyright 2018-present Chen Fengyuan
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
*
|
|
8
|
-
* Date: 2021-10-
|
|
8
|
+
* Date: 2021-10-05T02:32:40.212Z
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
(function (global, factory) {
|
|
@@ -124,6 +124,9 @@
|
|
|
124
124
|
*/
|
|
125
125
|
|
|
126
126
|
(function (module) {
|
|
127
|
+
if (typeof window === 'undefined') {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
127
130
|
|
|
128
131
|
(function (window) {
|
|
129
132
|
|
package/dist/compressor.min.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Compressor.js v1.1.
|
|
2
|
+
* Compressor.js v1.1.1
|
|
3
3
|
* https://fengyuanchen.github.io/compressorjs
|
|
4
4
|
*
|
|
5
5
|
* Copyright 2018-present Chen Fengyuan
|
|
6
6
|
* Released under the MIT license
|
|
7
7
|
*
|
|
8
|
-
* Date: 2021-10-
|
|
8
|
+
* Date: 2021-10-05T02:32:40.212Z
|
|
9
9
|
*/
|
|
10
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Compressor=t()}(this,function(){"use strict";function t(t,e){var r,i=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,r)),i}function a(i){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?t(Object(a),!0).forEach(function(e){var t,r;t=i,e=a[r=e],r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach(function(e){Object.defineProperty(i,e,Object.getOwnPropertyDescriptor(a,e))})}return i}function n(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,i=arguments[t];for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(this,arguments)}var e,r,o,l,c,h,u,f,i={exports:{}};e=i,
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Compressor=t()}(this,function(){"use strict";function t(t,e){var r,i=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,r)),i}function a(i){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?t(Object(a),!0).forEach(function(e){var t,r;t=i,e=a[r=e],r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach(function(e){Object.defineProperty(i,e,Object.getOwnPropertyDescriptor(a,e))})}return i}function n(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,i=arguments[t];for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(this,arguments)}var e,r,o,l,c,h,u,f,i={exports:{}};e=i,"undefined"!=typeof window&&(o=(r=window).HTMLCanvasElement&&r.HTMLCanvasElement.prototype,l=r.Blob&&function(){try{return Boolean(new Blob)}catch(e){return!1}}(),c=l&&r.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(e){return!1}}(),h=r.BlobBuilder||r.WebKitBlobBuilder||r.MozBlobBuilder||r.MSBlobBuilder,u=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,f=(l||h)&&r.atob&&r.ArrayBuffer&&r.Uint8Array&&function(e){var t,r,i,a,n,o=e.match(u);if(!o)throw new Error("invalid data URI");for(t=o[2]?o[1]:"text/plain"+(o[3]||";charset=US-ASCII"),i=!!o[4],o=e.slice(o[0].length),r=(i?atob:decodeURIComponent)(o),i=new ArrayBuffer(r.length),a=new Uint8Array(i),n=0;n<r.length;n+=1)a[n]=r.charCodeAt(n);return l?new Blob([c?a:i],{type:t}):((o=new h).append(i),o.getBlob(t))},r.HTMLCanvasElement&&!o.toBlob&&(o.mozGetAsFile?o.toBlob=function(e,t,r){var i=this;setTimeout(function(){r&&o.toDataURL&&f?e(f(i.toDataURL(t,r))):e(i.mozGetAsFile("blob",t))})}:o.toDataURL&&f&&(o.msToBlob?o.toBlob=function(e,t,r){var i=this;setTimeout(function(){(t&&"image/png"!==t||r)&&o.toDataURL&&f?e(f(i.toDataURL(t,r))):e(i.msToBlob(t))})}:o.toBlob=function(e,t,r){var i=this;setTimeout(function(){e(f(i.toDataURL(t,r)))})})),e.exports?e.exports=f:r.dataURLtoBlob=f);function j(e){return 0<e&&e<1/0}var T=i.exports,d={strict:!0,checkOrientation:!0,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:"none",quality:.8,mimeType:"auto",convertTypes:["image/png"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},m="undefined"!=typeof window&&void 0!==window.document?window:{},p=Array.prototype.slice;var b=/^image\/.+$/;function R(e){return b.test(e)}var g=String.fromCharCode;var y=m.btoa;function w(e,t){for(var r,i=[],a=new Uint8Array(e);0<a.length;)i.push(g.apply(null,(r=a.subarray(0,8192),Array.from?Array.from(r):p.call(r)))),a=a.subarray(8192);return"data:".concat(t,";base64,").concat(y(i.join("")))}function v(e){var t,r,i,a,n,o,s,l=new DataView(e);try{if(255===l.getUint8(0)&&216===l.getUint8(1))for(var c=l.byteLength,h=2;h+1<c;){if(255===l.getUint8(h)&&225===l.getUint8(h+1)){r=h;break}h+=1}if(r&&(a=r+10,"Exif"===function(e,t,r){var i,a="";for(r+=t,i=t;i<r;i+=1)a+=g(e.getUint8(i));return a}(l,r+4,4)&&(!(s=18761===(n=l.getUint16(a)))&&19789!==n||42!==l.getUint16(a+2,s)||8<=(o=l.getUint32(a+4,s))&&(i=a+o))),i)for(var u,f=l.getUint16(i,s),d=0;d<f;d+=1)if(u=i+12*d+2,274===l.getUint16(u,s)){u+=8,t=l.getUint16(u,s),l.setUint16(u,1,s);break}}catch(e){t=1}return t}var U=/\.\d*(?:0|9){12}\d*$/;function k(e,t){t=1<arguments.length&&void 0!==t?t:1e11;return U.test(e)?Math.round(e*t)/t:e}function x(e,t){var r=e.aspectRatio,i=e.height,a=e.width,n=1<arguments.length&&void 0!==t?t:"none",o=j(a),e=j(i);return o&&e?(t=i*r,("contain"===n||"none"===n)&&a<t||"cover"===n&&t<a?i=a/r:a=i*r):o?i=a/r:e&&(a=i*r),{width:a,height:i}}var O=m.ArrayBuffer,B=m.FileReader,A=m.URL||m.webkitURL,M=/\.\w+$/,D=m.Compressor;return function(){function r(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r),this.file=e,this.image=new Image,this.options=a(a({},d),t),this.aborted=!1,this.result=null,this.init()}var e,t,i;return e=r,i=[{key:"noConflict",value:function(){return window.Compressor=D,r}},{key:"setDefaults",value:function(e){s(d,e)}}],(t=[{key:"init",value:function(){var i,e,a,n=this,o=this.file,t=this.options;e=o,"undefined"!=typeof Blob&&(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e))?R(i=o.type)?A&&B?(O||(t.checkOrientation=!1),A&&!t.checkOrientation?this.load({url:A.createObjectURL(o)}):(e=new B,a=t.checkOrientation&&"image/jpeg"===i,(this.reader=e).onload=function(e){var t=e.target.result,r={};a?1<(e=v(t))||!A?(r.url=w(t,i),1<e&&s(r,function(e){var t=0,r=1,i=1;switch(e){case 2:r=-1;break;case 3:t=-180;break;case 4:i=-1;break;case 5:t=90,i=-1;break;case 6:t=90;break;case 7:t=90,r=-1;break;case 8:t=-90}return{rotate:t,scaleX:r,scaleY:i}}(e))):r.url=A.createObjectURL(o):r.url=t,n.load(r)},e.onabort=function(){n.fail(new Error("Aborted to read the image with FileReader."))},e.onerror=function(){n.fail(new Error("Failed to read the image with FileReader."))},e.onloadend=function(){n.reader=null},a?e.readAsArrayBuffer(o):e.readAsDataURL(o))):this.fail(new Error("The current browser does not support image compression.")):this.fail(new Error("The first argument must be an image File or Blob object.")):this.fail(new Error("The first argument must be a File or Blob object."))}},{key:"load",value:function(e){var t=this,r=this.file,i=this.image;i.onload=function(){t.draw(a(a({},e),{},{naturalWidth:i.naturalWidth,naturalHeight:i.naturalHeight}))},i.onabort=function(){t.fail(new Error("Aborted to load the image."))},i.onerror=function(){t.fail(new Error("Failed to load the image."))},m.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(m.navigator.userAgent)&&(i.crossOrigin="anonymous"),i.alt=r.name,i.src=e.url}},{key:"draw",value:function(e){var t=this,r=e.naturalWidth,i=e.naturalHeight,a=e.rotate,n=void 0===a?0:a,o=e.scaleX,s=void 0===o?1:o,l=e.scaleY,c=void 0===l?1:l,h=this.file,u=this.image,f=this.options,d=document.createElement("canvas"),m=d.getContext("2d"),p=Math.abs(n)%180==90,b=("contain"===f.resize||"cover"===f.resize)&&j(f.width)&&j(f.height),g=Math.max(f.maxWidth,0)||1/0,y=Math.max(f.maxHeight,0)||1/0,w=Math.max(f.minWidth,0)||0,a=Math.max(f.minHeight,0)||0,o=r/i,e=f.width,l=f.height;p&&(g=(v=[y,g])[0],y=v[1],w=(v=[a,w])[0],a=v[1],e=(v=[l,e])[0],l=v[1]);var v=x({aspectRatio:o=b?e/l:o,width:g,height:y},"contain");g=v.width,y=v.height;v=x({aspectRatio:o,width:w,height:a},"cover");w=v.width,a=v.height,l=b?(e=(v=x({aspectRatio:o,width:e,height:l},f.resize)).width,v.height):(e=void 0===(O=(U=x({aspectRatio:o,width:e,height:l})).width)?r:O,void 0===(O=U.height)?i:O);var U=-(e=Math.floor(k(Math.min(Math.max(e,w),g))))/2,O=-(l=Math.floor(k(Math.min(Math.max(l,a),y))))/2,w=e,g=l,a=[];b&&(y=(o=x({aspectRatio:o,width:y=r,height:b=i},{contain:"cover",cover:"contain"}[f.resize])).width,b=o.height,a.push((r-y)/2,(i-b)/2,y,b)),a.push(U,O,w,g),p&&(e=(B=[l,e])[0],l=B[1]),d.width=e,d.height=l,R(f.mimeType)||(f.mimeType=h.type);var B="transparent";h.size>f.convertSize&&0<=f.convertTypes.indexOf(f.mimeType)&&(f.mimeType="image/jpeg"),"image/jpeg"===f.mimeType&&(B="#fff"),m.fillStyle=B,m.fillRect(0,0,e,l),f.beforeDraw&&f.beforeDraw.call(this,m,d),this.aborted||(m.save(),m.translate(e/2,l/2),m.rotate(n*Math.PI/180),m.scale(s,c),m.drawImage.apply(m,[u].concat(a)),m.restore(),f.drew&&f.drew.call(this,m,d),this.aborted||(m=function(e){t.aborted||t.done({naturalWidth:r,naturalHeight:i,result:e})},d.toBlob?d.toBlob(m,f.mimeType,f.quality):m(T(d.toDataURL(f.mimeType,f.quality)))))}},{key:"done",value:function(e){var t=e.naturalWidth,r=e.naturalHeight,i=e.result,a=this.file,n=this.image,e=this.options;A&&!e.checkOrientation&&A.revokeObjectURL(n.src),!i||e.strict&&i.size>a.size&&e.mimeType===a.type&&!(e.width>t||e.height>r||e.minWidth>t||e.minHeight>r||e.maxWidth<t||e.maxHeight<r)?i=a:(r=new Date,i.lastModified=r.getTime(),i.lastModifiedDate=r,i.name=a.name,i.name&&i.type!==a.type&&(i.name=i.name.replace(M,(a=R(a=i.type)?a.substr(6):"",".".concat(a="jpeg"===a?"jpg":a))))),this.result=i,e.success&&e.success.call(this,i)}},{key:"fail",value:function(e){var t=this.options;if(!t.error)throw e;t.error.call(this,e)}},{key:"abort",value:function(){this.aborted||(this.aborted=!0,this.reader?this.reader.abort():this.image.complete?this.fail(new Error("The compression process has been aborted.")):(this.image.onload=null,this.image.onabort()))}}])&&n(e.prototype,t),i&&n(e,i),r}()});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "compressorjs",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "JavaScript image compressor.",
|
|
5
5
|
"main": "dist/compressor.common.js",
|
|
6
6
|
"module": "dist/compressor.esm.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@commitlint/cli": "^13.2.0",
|
|
55
55
|
"@commitlint/config-conventional": "^13.2.0",
|
|
56
56
|
"@rollup/plugin-babel": "^5.3.0",
|
|
57
|
-
"@rollup/plugin-commonjs": "^
|
|
57
|
+
"@rollup/plugin-commonjs": "^21.0.0",
|
|
58
58
|
"@rollup/plugin-node-resolve": "^13.0.5",
|
|
59
59
|
"@rollup/plugin-replace": "^3.0.0",
|
|
60
60
|
"babel-plugin-istanbul": "^6.0.0",
|
|
@@ -75,10 +75,10 @@
|
|
|
75
75
|
"karma-mocha": "^2.0.1",
|
|
76
76
|
"karma-mocha-reporter": "^2.2.5",
|
|
77
77
|
"karma-rollup-preprocessor": "^7.0.7",
|
|
78
|
-
"lint-staged": "^11.
|
|
78
|
+
"lint-staged": "^11.2.0",
|
|
79
79
|
"mocha": "^9.1.2",
|
|
80
80
|
"puppeteer": "^10.4.0",
|
|
81
|
-
"rollup": "^2.
|
|
81
|
+
"rollup": "^2.58.0",
|
|
82
82
|
"stylelint": "^13.13.1",
|
|
83
83
|
"stylelint-config-standard": "^22.0.0",
|
|
84
84
|
"stylelint-order": "^4.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compressor.common.js","sources":["../node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.js","../node_modules/is-blob/index.js","../src/defaults.js","../src/constants.js","../src/utilities.js","../src/index.js"],"sourcesContent":["/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global define, Uint8Array, ArrayBuffer, module */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (\n ((type && type !== 'image/png') || quality) &&\n CanvasPrototype.toDataURL &&\n dataURLtoBlob\n ) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.msToBlob(type))\n }\n })\n }\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","export default {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null,\n};\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const WINDOW = IS_BROWSER ? window : {};\n","import {\n WINDOW,\n} from './constants';\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nexport const isPositiveNumber = (value) => value > 0 && value < Infinity;\n\nconst { slice } = Array.prototype;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nexport function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n}\n\nconst REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n/**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\nexport function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n}\n\n/**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\nexport function imageTypeToExtension(value) {\n let extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return `.${extension}`;\n}\n\nconst { fromCharCode } = String;\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 */\nexport function getStringFromCharCode(dataView, start, length) {\n let str = '';\n let i;\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\nconst { btoa } = WINDOW;\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 */\nexport function arrayBufferToDataURL(arrayBuffer, mimeType) {\n const chunks = [];\n const chunkSize = 8192;\n let uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return `data:${mimeType};base64,${btoa(chunks.join(''))}`;\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 */\nexport function resetAndGetOrientation(arrayBuffer) {\n const dataView = new DataView(arrayBuffer);\n let orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n let littleEndian;\n let app1Start;\n let ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n const length = dataView.byteLength;\n let offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n const exifIDCode = app1Start + 4;\n const tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n const 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 const 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 const length = dataView.getUint16(ifdStart, littleEndian);\n let offset;\n let i;\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 } catch (e) {\n orientation = 1;\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 */\nexport function parseOrientation(orientation) {\n let rotate = 0;\n let scaleX = 1;\n let 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,\n scaleX,\n scaleY,\n };\n}\n\nconst REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nexport function normalizeDecimalNumber(value, times = 100000000000) {\n return REGEXP_DECIMALS.test(value) ? (Math.round(value * times) / times) : value;\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nexport function getAdjustedSizes(\n {\n aspectRatio,\n height,\n width,\n },\n\n // 'none' | 'contain' | 'cover'\n type = 'none',\n) {\n const isValidWidth = isPositiveNumber(width);\n const isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n const adjustedWidth = height * aspectRatio;\n\n if (((type === 'contain' || type === 'none') && adjustedWidth > width) || (type === 'cover' && adjustedWidth < width)) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width,\n height,\n };\n}\n","import toBlob from 'blueimp-canvas-to-blob';\nimport isBlob from 'is-blob';\nimport DEFAULTS from './defaults';\nimport {\n WINDOW,\n} from './constants';\nimport {\n arrayBufferToDataURL,\n getAdjustedSizes,\n imageTypeToExtension,\n isImageType,\n isPositiveNumber,\n normalizeDecimalNumber,\n parseOrientation,\n resetAndGetOrientation,\n} from './utilities';\n\nconst { ArrayBuffer, FileReader } = WINDOW;\nconst URL = WINDOW.URL || WINDOW.webkitURL;\nconst REGEXP_EXTENSION = /\\.\\w+$/;\nconst AnotherCompressor = WINDOW.Compressor;\n\n/**\n * Creates a new image compressor.\n * @class\n */\nexport default class Compressor {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n constructor(file, options) {\n this.file = file;\n this.image = new Image();\n this.options = {\n ...DEFAULTS,\n ...options,\n };\n this.aborted = false;\n this.result = null;\n this.init();\n }\n\n init() {\n const { file, options } = this;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n const mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file),\n });\n } else {\n const reader = new FileReader();\n const checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n\n this.reader = reader;\n reader.onload = ({ target }) => {\n const { result } = target;\n const data = {};\n\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n const orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n Object.assign(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n this.load(data);\n };\n reader.onabort = () => {\n this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = () => {\n this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = () => {\n this.reader = null;\n };\n\n if (checkOrientation) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n\n load(data) {\n const { file, image } = this;\n\n image.onload = () => {\n this.draw({\n ...data,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n });\n };\n image.onabort = () => {\n this.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = () => {\n this.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n\n image.alt = file.name;\n image.src = data.url;\n }\n\n draw({\n naturalWidth,\n naturalHeight,\n rotate = 0,\n scaleX = 1,\n scaleY = 1,\n }) {\n const { file, image, options } = this;\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n const resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n let maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n let maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n let minWidth = Math.max(options.minWidth, 0) || 0;\n let minHeight = Math.max(options.minHeight, 0) || 0;\n let aspectRatio = naturalWidth / naturalHeight;\n let { width, height } = options;\n\n if (is90DegreesRotated) {\n [maxWidth, maxHeight] = [maxHeight, maxWidth];\n [minWidth, minHeight] = [minHeight, minWidth];\n [width, height] = [height, width];\n }\n\n if (resizable) {\n aspectRatio = width / height;\n }\n\n ({ width: maxWidth, height: maxHeight } = getAdjustedSizes({\n aspectRatio,\n width: maxWidth,\n height: maxHeight,\n }, 'contain'));\n ({ width: minWidth, height: minHeight } = getAdjustedSizes({\n aspectRatio,\n width: minWidth,\n height: minHeight,\n }, 'cover'));\n\n if (resizable) {\n ({ width, height } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }, options.resize));\n } else {\n ({ width = naturalWidth, height = naturalHeight } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }));\n }\n\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n\n const destX = -width / 2;\n const destY = -height / 2;\n const destWidth = width;\n const destHeight = height;\n const params = [];\n\n if (resizable) {\n let srcX = 0;\n let srcY = 0;\n let srcWidth = naturalWidth;\n let srcHeight = naturalHeight;\n\n ({ width: srcWidth, height: srcHeight } = getAdjustedSizes({\n aspectRatio,\n width: naturalWidth,\n height: naturalHeight,\n }, {\n contain: 'cover',\n cover: 'contain',\n }[options.resize]));\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n\n params.push(destX, destY, destWidth, destHeight);\n\n if (is90DegreesRotated) {\n [width, height] = [height, width];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n let fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n\n if (options.mimeType === 'image/jpeg') {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate((rotate * Math.PI) / 180);\n context.scale(scaleX, scaleY);\n context.drawImage(image, ...params);\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n const done = (result) => {\n if (!this.aborted) {\n this.done({\n naturalWidth,\n naturalHeight,\n result,\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n\n done({\n naturalWidth,\n naturalHeight,\n result,\n }) {\n const { file, image, options } = this;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(\n options.width > naturalWidth\n || options.height > naturalHeight\n || options.minWidth > naturalWidth\n || options.minHeight > naturalHeight\n || options.maxWidth < naturalWidth\n || options.maxHeight < naturalHeight\n )) {\n result = file;\n } else {\n const date = new Date();\n\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(\n REGEXP_EXTENSION,\n imageTypeToExtension(result.type),\n );\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n\n this.result = result;\n\n if (options.success) {\n options.success.call(this, result);\n }\n }\n\n fail(err) {\n const { options } = this;\n\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n static noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n static setDefaults(options) {\n Object.assign(DEFAULTS, options);\n }\n}\n"],"names":["window","CanvasPrototype","HTMLCanvasElement","prototype","hasBlobConstructor","Blob","Boolean","e","hasArrayBufferViewSupport","Uint8Array","size","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","atob","ArrayBuffer","dataURI","matches","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","i","bb","match","Error","slice","length","decodeURIComponent","charCodeAt","type","append","getBlob","toBlob","mozGetAsFile","callback","quality","self","setTimeout","toDataURL","msToBlob","module","exports","isBlob","value","Object","toString","call","strict","checkOrientation","maxWidth","Infinity","maxHeight","minWidth","minHeight","width","undefined","height","resize","mimeType","convertTypes","convertSize","beforeDraw","drew","success","error","IS_BROWSER","document","WINDOW","isPositiveNumber","Array","toArray","from","REGEXP_IMAGE_TYPE","isImageType","test","imageTypeToExtension","extension","substr","fromCharCode","String","getStringFromCharCode","dataView","start","str","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","uint8","push","apply","subarray","join","resetAndGetOrientation","DataView","orientation","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","setUint16","parseOrientation","rotate","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","getAdjustedSizes","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","options","image","Image","DEFAULTS","aborted","result","init","fail","load","url","createObjectURL","reader","onload","target","data","onabort","onerror","onloadend","readAsArrayBuffer","readAsDataURL","draw","naturalWidth","naturalHeight","navigator","userAgent","crossOrigin","alt","name","src","canvas","createElement","context","getContext","is90DegreesRotated","abs","resizable","max","floor","min","destX","destY","destWidth","destHeight","params","srcX","srcY","srcWidth","srcHeight","contain","cover","fillStyle","indexOf","fillRect","save","translate","PI","scale","drawImage","restore","done","revokeObjectURL","date","Date","lastModified","getTime","lastModifiedDate","replace","err","abort","complete"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compressor.esm.js","sources":["../node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.js","../node_modules/is-blob/index.js","../src/defaults.js","../src/constants.js","../src/utilities.js","../src/index.js"],"sourcesContent":["/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global define, Uint8Array, ArrayBuffer, module */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (\n ((type && type !== 'image/png') || quality) &&\n CanvasPrototype.toDataURL &&\n dataURLtoBlob\n ) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.msToBlob(type))\n }\n })\n }\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","export default {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null,\n};\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const WINDOW = IS_BROWSER ? window : {};\n","import {\n WINDOW,\n} from './constants';\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nexport const isPositiveNumber = (value) => value > 0 && value < Infinity;\n\nconst { slice } = Array.prototype;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nexport function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n}\n\nconst REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n/**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\nexport function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n}\n\n/**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\nexport function imageTypeToExtension(value) {\n let extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return `.${extension}`;\n}\n\nconst { fromCharCode } = String;\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 */\nexport function getStringFromCharCode(dataView, start, length) {\n let str = '';\n let i;\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\nconst { btoa } = WINDOW;\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 */\nexport function arrayBufferToDataURL(arrayBuffer, mimeType) {\n const chunks = [];\n const chunkSize = 8192;\n let uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return `data:${mimeType};base64,${btoa(chunks.join(''))}`;\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 */\nexport function resetAndGetOrientation(arrayBuffer) {\n const dataView = new DataView(arrayBuffer);\n let orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n let littleEndian;\n let app1Start;\n let ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n const length = dataView.byteLength;\n let offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n const exifIDCode = app1Start + 4;\n const tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n const 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 const 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 const length = dataView.getUint16(ifdStart, littleEndian);\n let offset;\n let i;\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 } catch (e) {\n orientation = 1;\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 */\nexport function parseOrientation(orientation) {\n let rotate = 0;\n let scaleX = 1;\n let 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,\n scaleX,\n scaleY,\n };\n}\n\nconst REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nexport function normalizeDecimalNumber(value, times = 100000000000) {\n return REGEXP_DECIMALS.test(value) ? (Math.round(value * times) / times) : value;\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nexport function getAdjustedSizes(\n {\n aspectRatio,\n height,\n width,\n },\n\n // 'none' | 'contain' | 'cover'\n type = 'none',\n) {\n const isValidWidth = isPositiveNumber(width);\n const isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n const adjustedWidth = height * aspectRatio;\n\n if (((type === 'contain' || type === 'none') && adjustedWidth > width) || (type === 'cover' && adjustedWidth < width)) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width,\n height,\n };\n}\n","import toBlob from 'blueimp-canvas-to-blob';\nimport isBlob from 'is-blob';\nimport DEFAULTS from './defaults';\nimport {\n WINDOW,\n} from './constants';\nimport {\n arrayBufferToDataURL,\n getAdjustedSizes,\n imageTypeToExtension,\n isImageType,\n isPositiveNumber,\n normalizeDecimalNumber,\n parseOrientation,\n resetAndGetOrientation,\n} from './utilities';\n\nconst { ArrayBuffer, FileReader } = WINDOW;\nconst URL = WINDOW.URL || WINDOW.webkitURL;\nconst REGEXP_EXTENSION = /\\.\\w+$/;\nconst AnotherCompressor = WINDOW.Compressor;\n\n/**\n * Creates a new image compressor.\n * @class\n */\nexport default class Compressor {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n constructor(file, options) {\n this.file = file;\n this.image = new Image();\n this.options = {\n ...DEFAULTS,\n ...options,\n };\n this.aborted = false;\n this.result = null;\n this.init();\n }\n\n init() {\n const { file, options } = this;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n const mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file),\n });\n } else {\n const reader = new FileReader();\n const checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n\n this.reader = reader;\n reader.onload = ({ target }) => {\n const { result } = target;\n const data = {};\n\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n const orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n Object.assign(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n this.load(data);\n };\n reader.onabort = () => {\n this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = () => {\n this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = () => {\n this.reader = null;\n };\n\n if (checkOrientation) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n\n load(data) {\n const { file, image } = this;\n\n image.onload = () => {\n this.draw({\n ...data,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n });\n };\n image.onabort = () => {\n this.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = () => {\n this.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n\n image.alt = file.name;\n image.src = data.url;\n }\n\n draw({\n naturalWidth,\n naturalHeight,\n rotate = 0,\n scaleX = 1,\n scaleY = 1,\n }) {\n const { file, image, options } = this;\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n const resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n let maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n let maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n let minWidth = Math.max(options.minWidth, 0) || 0;\n let minHeight = Math.max(options.minHeight, 0) || 0;\n let aspectRatio = naturalWidth / naturalHeight;\n let { width, height } = options;\n\n if (is90DegreesRotated) {\n [maxWidth, maxHeight] = [maxHeight, maxWidth];\n [minWidth, minHeight] = [minHeight, minWidth];\n [width, height] = [height, width];\n }\n\n if (resizable) {\n aspectRatio = width / height;\n }\n\n ({ width: maxWidth, height: maxHeight } = getAdjustedSizes({\n aspectRatio,\n width: maxWidth,\n height: maxHeight,\n }, 'contain'));\n ({ width: minWidth, height: minHeight } = getAdjustedSizes({\n aspectRatio,\n width: minWidth,\n height: minHeight,\n }, 'cover'));\n\n if (resizable) {\n ({ width, height } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }, options.resize));\n } else {\n ({ width = naturalWidth, height = naturalHeight } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }));\n }\n\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n\n const destX = -width / 2;\n const destY = -height / 2;\n const destWidth = width;\n const destHeight = height;\n const params = [];\n\n if (resizable) {\n let srcX = 0;\n let srcY = 0;\n let srcWidth = naturalWidth;\n let srcHeight = naturalHeight;\n\n ({ width: srcWidth, height: srcHeight } = getAdjustedSizes({\n aspectRatio,\n width: naturalWidth,\n height: naturalHeight,\n }, {\n contain: 'cover',\n cover: 'contain',\n }[options.resize]));\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n\n params.push(destX, destY, destWidth, destHeight);\n\n if (is90DegreesRotated) {\n [width, height] = [height, width];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n let fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n\n if (options.mimeType === 'image/jpeg') {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate((rotate * Math.PI) / 180);\n context.scale(scaleX, scaleY);\n context.drawImage(image, ...params);\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n const done = (result) => {\n if (!this.aborted) {\n this.done({\n naturalWidth,\n naturalHeight,\n result,\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n\n done({\n naturalWidth,\n naturalHeight,\n result,\n }) {\n const { file, image, options } = this;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(\n options.width > naturalWidth\n || options.height > naturalHeight\n || options.minWidth > naturalWidth\n || options.minHeight > naturalHeight\n || options.maxWidth < naturalWidth\n || options.maxHeight < naturalHeight\n )) {\n result = file;\n } else {\n const date = new Date();\n\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(\n REGEXP_EXTENSION,\n imageTypeToExtension(result.type),\n );\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n\n this.result = result;\n\n if (options.success) {\n options.success.call(this, result);\n }\n }\n\n fail(err) {\n const { options } = this;\n\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n static noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n static setDefaults(options) {\n Object.assign(DEFAULTS, options);\n }\n}\n"],"names":["window","CanvasPrototype","HTMLCanvasElement","prototype","hasBlobConstructor","Blob","Boolean","e","hasArrayBufferViewSupport","Uint8Array","size","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","atob","ArrayBuffer","dataURI","matches","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","i","bb","match","Error","slice","length","decodeURIComponent","charCodeAt","type","append","getBlob","toBlob","mozGetAsFile","callback","quality","self","setTimeout","toDataURL","msToBlob","module","exports","isBlob","value","Object","toString","call","strict","checkOrientation","maxWidth","Infinity","maxHeight","minWidth","minHeight","width","undefined","height","resize","mimeType","convertTypes","convertSize","beforeDraw","drew","success","error","IS_BROWSER","document","WINDOW","isPositiveNumber","Array","toArray","from","REGEXP_IMAGE_TYPE","isImageType","test","imageTypeToExtension","extension","substr","fromCharCode","String","getStringFromCharCode","dataView","start","str","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","uint8","push","apply","subarray","join","resetAndGetOrientation","DataView","orientation","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","setUint16","parseOrientation","rotate","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","getAdjustedSizes","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","options","image","Image","DEFAULTS","aborted","result","init","fail","load","url","createObjectURL","reader","onload","target","data","onabort","onerror","onloadend","readAsArrayBuffer","readAsDataURL","draw","naturalWidth","naturalHeight","navigator","userAgent","crossOrigin","alt","name","src","canvas","createElement","context","getContext","is90DegreesRotated","abs","resizable","max","floor","min","destX","destY","destWidth","destHeight","params","srcX","srcY","srcWidth","srcHeight","contain","cover","fillStyle","indexOf","fillRect","save","translate","PI","scale","drawImage","restore","done","revokeObjectURL","date","Date","lastModified","getTime","lastModifiedDate","replace","err","abort","complete"],"mappings":"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"}
|
package/dist/compressor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compressor.js","sources":["../node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.js","../node_modules/is-blob/index.js","../src/defaults.js","../src/constants.js","../src/utilities.js","../src/index.js"],"sourcesContent":["/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global define, Uint8Array, ArrayBuffer, module */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (\n ((type && type !== 'image/png') || quality) &&\n CanvasPrototype.toDataURL &&\n dataURLtoBlob\n ) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.msToBlob(type))\n }\n })\n }\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","export default {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null,\n};\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const WINDOW = IS_BROWSER ? window : {};\n","import {\n WINDOW,\n} from './constants';\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nexport const isPositiveNumber = (value) => value > 0 && value < Infinity;\n\nconst { slice } = Array.prototype;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nexport function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n}\n\nconst REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n/**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\nexport function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n}\n\n/**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\nexport function imageTypeToExtension(value) {\n let extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return `.${extension}`;\n}\n\nconst { fromCharCode } = String;\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 */\nexport function getStringFromCharCode(dataView, start, length) {\n let str = '';\n let i;\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\nconst { btoa } = WINDOW;\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 */\nexport function arrayBufferToDataURL(arrayBuffer, mimeType) {\n const chunks = [];\n const chunkSize = 8192;\n let uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return `data:${mimeType};base64,${btoa(chunks.join(''))}`;\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 */\nexport function resetAndGetOrientation(arrayBuffer) {\n const dataView = new DataView(arrayBuffer);\n let orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n let littleEndian;\n let app1Start;\n let ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n const length = dataView.byteLength;\n let offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n const exifIDCode = app1Start + 4;\n const tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n const 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 const 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 const length = dataView.getUint16(ifdStart, littleEndian);\n let offset;\n let i;\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 } catch (e) {\n orientation = 1;\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 */\nexport function parseOrientation(orientation) {\n let rotate = 0;\n let scaleX = 1;\n let 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,\n scaleX,\n scaleY,\n };\n}\n\nconst REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nexport function normalizeDecimalNumber(value, times = 100000000000) {\n return REGEXP_DECIMALS.test(value) ? (Math.round(value * times) / times) : value;\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nexport function getAdjustedSizes(\n {\n aspectRatio,\n height,\n width,\n },\n\n // 'none' | 'contain' | 'cover'\n type = 'none',\n) {\n const isValidWidth = isPositiveNumber(width);\n const isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n const adjustedWidth = height * aspectRatio;\n\n if (((type === 'contain' || type === 'none') && adjustedWidth > width) || (type === 'cover' && adjustedWidth < width)) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width,\n height,\n };\n}\n","import toBlob from 'blueimp-canvas-to-blob';\nimport isBlob from 'is-blob';\nimport DEFAULTS from './defaults';\nimport {\n WINDOW,\n} from './constants';\nimport {\n arrayBufferToDataURL,\n getAdjustedSizes,\n imageTypeToExtension,\n isImageType,\n isPositiveNumber,\n normalizeDecimalNumber,\n parseOrientation,\n resetAndGetOrientation,\n} from './utilities';\n\nconst { ArrayBuffer, FileReader } = WINDOW;\nconst URL = WINDOW.URL || WINDOW.webkitURL;\nconst REGEXP_EXTENSION = /\\.\\w+$/;\nconst AnotherCompressor = WINDOW.Compressor;\n\n/**\n * Creates a new image compressor.\n * @class\n */\nexport default class Compressor {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n constructor(file, options) {\n this.file = file;\n this.image = new Image();\n this.options = {\n ...DEFAULTS,\n ...options,\n };\n this.aborted = false;\n this.result = null;\n this.init();\n }\n\n init() {\n const { file, options } = this;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n const mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file),\n });\n } else {\n const reader = new FileReader();\n const checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n\n this.reader = reader;\n reader.onload = ({ target }) => {\n const { result } = target;\n const data = {};\n\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n const orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n Object.assign(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n this.load(data);\n };\n reader.onabort = () => {\n this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = () => {\n this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = () => {\n this.reader = null;\n };\n\n if (checkOrientation) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n\n load(data) {\n const { file, image } = this;\n\n image.onload = () => {\n this.draw({\n ...data,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n });\n };\n image.onabort = () => {\n this.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = () => {\n this.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n\n image.alt = file.name;\n image.src = data.url;\n }\n\n draw({\n naturalWidth,\n naturalHeight,\n rotate = 0,\n scaleX = 1,\n scaleY = 1,\n }) {\n const { file, image, options } = this;\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n const resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n let maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n let maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n let minWidth = Math.max(options.minWidth, 0) || 0;\n let minHeight = Math.max(options.minHeight, 0) || 0;\n let aspectRatio = naturalWidth / naturalHeight;\n let { width, height } = options;\n\n if (is90DegreesRotated) {\n [maxWidth, maxHeight] = [maxHeight, maxWidth];\n [minWidth, minHeight] = [minHeight, minWidth];\n [width, height] = [height, width];\n }\n\n if (resizable) {\n aspectRatio = width / height;\n }\n\n ({ width: maxWidth, height: maxHeight } = getAdjustedSizes({\n aspectRatio,\n width: maxWidth,\n height: maxHeight,\n }, 'contain'));\n ({ width: minWidth, height: minHeight } = getAdjustedSizes({\n aspectRatio,\n width: minWidth,\n height: minHeight,\n }, 'cover'));\n\n if (resizable) {\n ({ width, height } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }, options.resize));\n } else {\n ({ width = naturalWidth, height = naturalHeight } = getAdjustedSizes({\n aspectRatio,\n width,\n height,\n }));\n }\n\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n\n const destX = -width / 2;\n const destY = -height / 2;\n const destWidth = width;\n const destHeight = height;\n const params = [];\n\n if (resizable) {\n let srcX = 0;\n let srcY = 0;\n let srcWidth = naturalWidth;\n let srcHeight = naturalHeight;\n\n ({ width: srcWidth, height: srcHeight } = getAdjustedSizes({\n aspectRatio,\n width: naturalWidth,\n height: naturalHeight,\n }, {\n contain: 'cover',\n cover: 'contain',\n }[options.resize]));\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n\n params.push(destX, destY, destWidth, destHeight);\n\n if (is90DegreesRotated) {\n [width, height] = [height, width];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n let fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n\n if (options.mimeType === 'image/jpeg') {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate((rotate * Math.PI) / 180);\n context.scale(scaleX, scaleY);\n context.drawImage(image, ...params);\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n const done = (result) => {\n if (!this.aborted) {\n this.done({\n naturalWidth,\n naturalHeight,\n result,\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n\n done({\n naturalWidth,\n naturalHeight,\n result,\n }) {\n const { file, image, options } = this;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(\n options.width > naturalWidth\n || options.height > naturalHeight\n || options.minWidth > naturalWidth\n || options.minHeight > naturalHeight\n || options.maxWidth < naturalWidth\n || options.maxHeight < naturalHeight\n )) {\n result = file;\n } else {\n const date = new Date();\n\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(\n REGEXP_EXTENSION,\n imageTypeToExtension(result.type),\n );\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n\n this.result = result;\n\n if (options.success) {\n options.success.call(this, result);\n }\n }\n\n fail(err) {\n const { options } = this;\n\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n static noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n static setDefaults(options) {\n Object.assign(DEFAULTS, options);\n }\n}\n"],"names":["window","CanvasPrototype","HTMLCanvasElement","prototype","hasBlobConstructor","Blob","Boolean","e","hasArrayBufferViewSupport","Uint8Array","size","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","atob","ArrayBuffer","dataURI","matches","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","i","bb","match","Error","slice","length","decodeURIComponent","charCodeAt","type","append","getBlob","toBlob","mozGetAsFile","callback","quality","self","setTimeout","toDataURL","msToBlob","module","exports","isBlob","value","Object","toString","call","strict","checkOrientation","maxWidth","Infinity","maxHeight","minWidth","minHeight","width","undefined","height","resize","mimeType","convertTypes","convertSize","beforeDraw","drew","success","error","IS_BROWSER","document","WINDOW","isPositiveNumber","Array","toArray","from","REGEXP_IMAGE_TYPE","isImageType","test","imageTypeToExtension","extension","substr","fromCharCode","String","getStringFromCharCode","dataView","start","str","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","uint8","push","apply","subarray","join","resetAndGetOrientation","DataView","orientation","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","setUint16","parseOrientation","rotate","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","getAdjustedSizes","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","options","image","Image","DEFAULTS","aborted","result","init","fail","load","url","createObjectURL","reader","onload","target","data","onabort","onerror","onloadend","readAsArrayBuffer","readAsDataURL","draw","naturalWidth","naturalHeight","navigator","userAgent","crossOrigin","alt","name","src","canvas","createElement","context","getContext","is90DegreesRotated","abs","resizable","max","floor","min","destX","destY","destWidth","destHeight","params","srcX","srcY","srcWidth","srcHeight","contain","cover","fillStyle","indexOf","fillRect","save","translate","PI","scale","drawImage","restore","done","revokeObjectURL","date","Date","lastModified","getTime","lastModifiedDate","replace","err","abort","complete"],"mappings":"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"}
|