UNPKG

@tldraw/utils

Version:

tldraw infinite canvas SDK (private utilities).

83 lines (82 loc) 2.16 kB
import { fetch } from "./network.mjs"; class FileHelpers { /** * @deprecated Use `urlToArrayBuffer` instead. */ static async dataUrlToArrayBuffer(dataURL) { return fetch(dataURL).then(function(result) { return result.arrayBuffer(); }); } /** * @param url - The url of the file. */ static async urlToArrayBuffer(url) { const response = await fetch(url); return await response.arrayBuffer(); } static async urlToBlob(url) { const response = await fetch(url); return await response.blob(); } static async urlToDataUrl(url) { if (url.startsWith("data:")) return url; const blob = await FileHelpers.urlToBlob(url); return await FileHelpers.blobToDataUrl(blob); } /** * Convert a file to a base64 encoded data url. * * @example * * ```ts * const A = FileHelpers.toDataUrl(myImageFile) * ``` * * @param file - The file as a blob. */ static async blobToDataUrl(file) { return await new Promise((resolve, reject) => { if (file) { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); reader.onabort = (error) => reject(error); reader.readAsDataURL(file); } }); } /** * Convert a file to a unicode text string. * * @example * * ```ts * const A = FileHelpers.fileToDataUrl(myTextFile) * ``` * * @param file - The file as a blob. */ static async blobToText(file) { return await new Promise((resolve, reject) => { if (file) { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); reader.onabort = (error) => reject(error); reader.readAsText(file); } }); } static rewriteMimeType(blob, newMimeType) { if (blob.type === newMimeType) return blob; if (blob instanceof File) { return new File([blob], blob.name, { type: newMimeType }); } return new Blob([blob], { type: newMimeType }); } } export { FileHelpers }; //# sourceMappingURL=file.mjs.map