|
|
@ -3,7 +3,9 @@ import 'intl/locale-data/jsonp/en'; |
|
|
|
import 'es6-symbol/implement'; |
|
|
|
import includes from 'array-includes'; |
|
|
|
import assign from 'object-assign'; |
|
|
|
import values from 'object.values'; |
|
|
|
import isNaN from 'is-nan'; |
|
|
|
import { decode as decodeBase64 } from './base64'; |
|
|
|
|
|
|
|
if (!Array.prototype.includes) { |
|
|
|
includes.shim(); |
|
|
@ -13,6 +15,30 @@ if (!Object.assign) { |
|
|
|
Object.assign = assign; |
|
|
|
} |
|
|
|
|
|
|
|
if (!Object.values) { |
|
|
|
values.shim(); |
|
|
|
} |
|
|
|
|
|
|
|
if (!Number.isNaN) { |
|
|
|
Number.isNaN = isNaN; |
|
|
|
} |
|
|
|
|
|
|
|
if (!HTMLCanvasElement.prototype.toBlob) { |
|
|
|
const BASE64_MARKER = ';base64,'; |
|
|
|
|
|
|
|
Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', { |
|
|
|
value(callback, type = 'image/png', quality) { |
|
|
|
const dataURL = this.toDataURL(type, quality); |
|
|
|
let data; |
|
|
|
|
|
|
|
if (dataURL.indexOf(BASE64_MARKER) >= 0) { |
|
|
|
const [, base64] = dataURL.split(BASE64_MARKER); |
|
|
|
data = decodeBase64(base64); |
|
|
|
} else { |
|
|
|
[, data] = dataURL.split(','); |
|
|
|
} |
|
|
|
|
|
|
|
callback(new Blob([data], { type })); |
|
|
|
}, |
|
|
|
}); |
|
|
|
} |