~cytrogen/masto-fe

ref: dc35e2d7569a293bbda92ee3ecba8d2d4e6a7b64 masto-fe/app/javascript/flavours/glitch/polyfills/base_polyfills.ts -rw-r--r-- 861 bytes
dc35e2d7 — Cytrogen Rename .scss → .css and remove sass dependency (Phase 9-10) a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 }));
    },
  });
}