UNPKG

@sebgroup/frontend-tools

Version:
61 lines (57 loc) 2.13 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.FileType = void 0; (function (FileType) { FileType["JSON"] = "json"; FileType["PDF"] = "pdf"; FileType["SpreadSheet"] = "xlsx"; FileType["XML"] = "xml"; })(exports.FileType || (exports.FileType = {})); function downloadFile(content, fileName, type) { const blob = toBlob(content, type); save(blob, fileName); } function toBlob(content, type) { const byteArray = typeof content === "string" ? toByteArray(content) : [content]; return new Blob(byteArray, { type: toContentType(type) }); } function toByteArray(base64Data, sliceSize = 512) { const byteCharacters = window.atob(base64Data); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { const slice = byteCharacters.slice(offset, offset + sliceSize); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } byteArrays.push(new Uint8Array(byteNumbers)); } return byteArrays; } function toContentType(type) { switch (type) { case exports.FileType.PDF: return "application/pdf"; case exports.FileType.SpreadSheet: return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; case exports.FileType.JSON: return "application/json"; case exports.FileType.XML: return "text/xml"; default: return "text/plain"; } } function save(blob, fileName) { const url = window.URL.createObjectURL(blob); const downloadableLink = document.createElement("a"); downloadableLink.download = fileName; downloadableLink.href = url; downloadableLink.style.display = "none"; document.body.appendChild(downloadableLink); downloadableLink.click(); downloadableLink.remove(); window.URL.revokeObjectURL(url); } exports.downloadFile = downloadFile; //# sourceMappingURL=downloadFile.js.map