@tldraw/utils
Version:
tldraw infinite canvas SDK (private utilities).
95 lines (94 loc) • 2.9 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var file_exports = {};
__export(file_exports, {
FileHelpers: () => FileHelpers
});
module.exports = __toCommonJS(file_exports);
var import_network = require("./network");
class FileHelpers {
/**
* @param url - The url of the file.
*/
static async urlToArrayBuffer(url) {
const response = await (0, import_network.fetch)(url);
return await response.arrayBuffer();
}
static async urlToBlob(url) {
const response = await (0, import_network.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 });
}
}
//# sourceMappingURL=file.js.map