UNPKG

@tldraw/utils

Version:

tldraw infinite canvas SDK (private utilities).

8 lines (7 loc) 4 kB
{ "version": 3, "sources": ["../../src/lib/file.ts"], "sourcesContent": ["import { fetch } from './network'\n\n/**\n * Helpers for files\n *\n * @public\n */\nexport class FileHelpers {\n\t/**\n\t * @deprecated Use `urlToArrayBuffer` instead.\n\t */\n\tstatic async dataUrlToArrayBuffer(dataURL: string) {\n\t\treturn fetch(dataURL).then(function (result) {\n\t\t\treturn result.arrayBuffer()\n\t\t})\n\t}\n\n\t/**\n\t * @param url - The url of the file.\n\t */\n\tstatic async urlToArrayBuffer(url: string) {\n\t\tconst response = await fetch(url)\n\t\treturn await response.arrayBuffer()\n\t}\n\n\tstatic async urlToBlob(url: string) {\n\t\tconst response = await fetch(url)\n\t\treturn await response.blob()\n\t}\n\n\tstatic async urlToDataUrl(url: string) {\n\t\tif (url.startsWith('data:')) return url\n\t\tconst blob = await FileHelpers.urlToBlob(url)\n\t\treturn await FileHelpers.blobToDataUrl(blob)\n\t}\n\n\t/**\n\t * Convert a file to a base64 encoded data url.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * const A = FileHelpers.toDataUrl(myImageFile)\n\t * ```\n\t *\n\t * @param file - The file as a blob.\n\t */\n\tstatic async blobToDataUrl(file: Blob): Promise<string> {\n\t\treturn await new Promise((resolve, reject) => {\n\t\t\tif (file) {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = () => resolve(reader.result as string)\n\t\t\t\treader.onerror = (error) => reject(error)\n\t\t\t\treader.onabort = (error) => reject(error)\n\t\t\t\treader.readAsDataURL(file)\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Convert a file to a unicode text string.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * const A = FileHelpers.fileToDataUrl(myTextFile)\n\t * ```\n\t *\n\t * @param file - The file as a blob.\n\t */\n\tstatic async blobToText(file: Blob): Promise<string> {\n\t\treturn await new Promise((resolve, reject) => {\n\t\t\tif (file) {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = () => resolve(reader.result as string)\n\t\t\t\treader.onerror = (error) => reject(error)\n\t\t\t\treader.onabort = (error) => reject(error)\n\t\t\t\treader.readAsText(file)\n\t\t\t}\n\t\t})\n\t}\n\n\tstatic rewriteMimeType(blob: Blob, newMimeType: string): Blob\n\tstatic rewriteMimeType(blob: File, newMimeType: string): File\n\tstatic rewriteMimeType(blob: Blob | File, newMimeType: string): Blob | File {\n\t\tif (blob.type === newMimeType) return blob\n\t\tif (blob instanceof File) {\n\t\t\treturn new File([blob], blob.name, { type: newMimeType })\n\t\t}\n\t\treturn new Blob([blob], { type: newMimeType })\n\t}\n}\n"], "mappings": "AAAA,SAAS,aAAa;AAOf,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA,EAIxB,aAAa,qBAAqB,SAAiB;AAClD,WAAO,MAAM,OAAO,EAAE,KAAK,SAAU,QAAQ;AAC5C,aAAO,OAAO,YAAY;AAAA,IAC3B,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,iBAAiB,KAAa;AAC1C,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,WAAO,MAAM,SAAS,YAAY;AAAA,EACnC;AAAA,EAEA,aAAa,UAAU,KAAa;AACnC,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,WAAO,MAAM,SAAS,KAAK;AAAA,EAC5B;AAAA,EAEA,aAAa,aAAa,KAAa;AACtC,QAAI,IAAI,WAAW,OAAO,EAAG,QAAO;AACpC,UAAM,OAAO,MAAM,YAAY,UAAU,GAAG;AAC5C,WAAO,MAAM,YAAY,cAAc,IAAI;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAAa,cAAc,MAA6B;AACvD,WAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC7C,UAAI,MAAM;AACT,cAAM,SAAS,IAAI,WAAW;AAC9B,eAAO,SAAS,MAAM,QAAQ,OAAO,MAAgB;AACrD,eAAO,UAAU,CAAC,UAAU,OAAO,KAAK;AACxC,eAAO,UAAU,CAAC,UAAU,OAAO,KAAK;AACxC,eAAO,cAAc,IAAI;AAAA,MAC1B;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAAa,WAAW,MAA6B;AACpD,WAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC7C,UAAI,MAAM;AACT,cAAM,SAAS,IAAI,WAAW;AAC9B,eAAO,SAAS,MAAM,QAAQ,OAAO,MAAgB;AACrD,eAAO,UAAU,CAAC,UAAU,OAAO,KAAK;AACxC,eAAO,UAAU,CAAC,UAAU,OAAO,KAAK;AACxC,eAAO,WAAW,IAAI;AAAA,MACvB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAIA,OAAO,gBAAgB,MAAmB,aAAkC;AAC3E,QAAI,KAAK,SAAS,YAAa,QAAO;AACtC,QAAI,gBAAgB,MAAM;AACzB,aAAO,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAAA,IACzD;AACA,WAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,YAAY,CAAC;AAAA,EAC9C;AACD;", "names": [] }