// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { IMAGE_JPEG } from '../types/MIME'; /** * Similar to [the built-in `toBlob` method][0], but returns a Promise. * * [0]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob */ export async function canvasToBlob( canvas: HTMLCanvasElement, mimeType = IMAGE_JPEG, quality?: number ): Promise { return new Promise((resolve, reject) => canvas.toBlob( result => { if (result) { resolve(result); } else { reject(new Error("Couldn't convert the canvas to a Blob")); } }, mimeType, quality ) ); }