Co-authored-by: tobi <tobi.smethurst@protonmail.com> Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/88 Co-authored-by: Zoë Bijl <moiety@noreply.codeberg.org> Co-committed-by: Zoë Bijl <moiety@noreply.codeberg.org>
31 lines
861 B
TypeScript
31 lines
861 B
TypeScript
import "core-js/features/object/assign";
|
|
import "core-js/features/object/values";
|
|
import "core-js/features/symbol";
|
|
import "core-js/features/promise/finally";
|
|
import { decode as decodeBase64 } from "../utils/base64";
|
|
|
|
if (!Object.hasOwn(HTMLCanvasElement.prototype, "toBlob")) {
|
|
const BASE64_MARKER = ";base64,";
|
|
|
|
Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
|
|
value: function (
|
|
this: HTMLCanvasElement,
|
|
callback: BlobCallback,
|
|
type = "image/png",
|
|
quality: unknown,
|
|
) {
|
|
const dataURL: string = this.toDataURL(type, quality);
|
|
let data;
|
|
|
|
if (dataURL.includes(BASE64_MARKER)) {
|
|
const [, base64] = dataURL.split(BASE64_MARKER);
|
|
data = decodeBase64(base64);
|
|
} else {
|
|
[, data] = dataURL.split(",");
|
|
}
|
|
|
|
callback(new Blob([data], { type }));
|
|
},
|
|
});
|
|
}
|