You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
import 'intl'; |
|
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 './utils/base64'; |
|
import promiseFinally from 'promise.prototype.finally'; |
|
|
|
if (!Array.prototype.includes) { |
|
includes.shim(); |
|
} |
|
|
|
if (!Object.assign) { |
|
Object.assign = assign; |
|
} |
|
|
|
if (!Object.values) { |
|
values.shim(); |
|
} |
|
|
|
if (!Number.isNaN) { |
|
Number.isNaN = isNaN; |
|
} |
|
|
|
promiseFinally.shim(); |
|
|
|
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 })); |
|
}, |
|
}); |
|
}
|
|
|