@tldraw/utils
Version:
tldraw infinite canvas SDK (private utilities).
83 lines (82 loc) • 2.16 kB
JavaScript
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