2f977ac8f3
Port 3cdaa34783
to glitch-soc
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
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 './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 }));
|
|
},
|
|
});
|
|
}
|