1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;
|
21 | var hasBlobConstructor = window.Blob && function () {
|
22 | try {
|
23 | return Boolean(new Blob());
|
24 | } catch (e) {
|
25 | return false;
|
26 | }
|
27 | }();
|
28 | var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {
|
29 | try {
|
30 | return new Blob([new Uint8Array(100)]).size === 100;
|
31 | } catch (e) {
|
32 | return false;
|
33 | }
|
34 | }();
|
35 | var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
|
36 | var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;
|
37 | var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {
|
38 | var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb;
|
39 |
|
40 | matches = dataURI.match(dataURIPattern);
|
41 | if (!matches) {
|
42 | throw new Error('invalid data URI');
|
43 | }
|
44 |
|
45 | mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');
|
46 | isBase64 = !!matches[4];
|
47 | dataString = dataURI.slice(matches[0].length);
|
48 | if (isBase64) {
|
49 |
|
50 | byteString = atob(dataString);
|
51 | } else {
|
52 |
|
53 | byteString = decodeURIComponent(dataString);
|
54 | }
|
55 |
|
56 | arrayBuffer = new ArrayBuffer(byteString.length);
|
57 | intArray = new Uint8Array(arrayBuffer);
|
58 | for (i = 0; i < byteString.length; i += 1) {
|
59 | intArray[i] = byteString.charCodeAt(i);
|
60 | }
|
61 |
|
62 | if (hasBlobConstructor) {
|
63 | return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], { type: mediaType });
|
64 | }
|
65 | bb = new BlobBuilder();
|
66 | bb.append(arrayBuffer);
|
67 | return bb.getBlob(mediaType);
|
68 | };
|
69 | if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {
|
70 | if (CanvasPrototype.mozGetAsFile) {
|
71 | CanvasPrototype.toBlob = function (callback, type, quality) {
|
72 | if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {
|
73 | callback(dataURLtoBlob(this.toDataURL(type, quality)));
|
74 | } else {
|
75 | callback(this.mozGetAsFile('blob', type));
|
76 | }
|
77 | };
|
78 | } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {
|
79 | CanvasPrototype.toBlob = function (callback, type, quality) {
|
80 | callback(dataURLtoBlob(this.toDataURL(type, quality)));
|
81 | };
|
82 | }
|
83 | }
|
84 | exports["default"] = dataURLtoBlob;
|
85 | module.exports = exports['default']; |
\ | No newline at end of file |