UNPKG

@trap_stevo/legendarybuilderproreact-ui

Version:

The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton

75 lines 2.37 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; var fileTypeMapping = { "video": ["mp4", "mkv", "avi"], "audio": ["mp3", "wav", "aac"], "text": ["txt", "md", "json"], "image": ["png", "jpg", "jpeg", "gif"], "document": ["pdf"], "binary": ["bin", "exe"] }; var mimeTypeMapping = { "video": "video/", "audio": "audio/", "text": "text/", "image": "image/", "document": "application/pdf", "binary": "application/octet-stream" }; export function DetermineFileType(file) { var contentType = file.contentType, name = file.name; if (!contentType) { return "unknown"; } for (var _i = 0, _Object$entries = Object.entries(mimeTypeMapping); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), type = _Object$entries$_i[0], mimePrefix = _Object$entries$_i[1]; if (contentType.startsWith(mimePrefix)) { return type; } } if (contentType === mimeTypeMapping["binary"]) { var fileExtension = name.split(".").pop().toLowerCase(); for (var _i2 = 0, _Object$entries2 = Object.entries(fileTypeMapping); _i2 < _Object$entries2.length; _i2++) { var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2), _type = _Object$entries2$_i[0], extensions = _Object$entries2$_i[1]; if (extensions.includes(fileExtension)) { return _type; } } } return "unknown"; } export function Download(_ref) { var data = _ref.data, _ref$fileName = _ref.fileName, fileName = _ref$fileName === void 0 ? "file" : _ref$fileName, _ref$fileType = _ref.fileType, fileType = _ref$fileType === void 0 ? "txt" : _ref$fileType; var fileTypeMapping = { txt: "text/plain", json: "application/json", mp4: "video/mp4", png: "image/png", jpg: "image/jpeg", pdf: "application/pdf", csv: "text/csv", html: "text/html" }; var fullFileType = fileTypeMapping[fileType] || fileType; var a = document.createElement("a"); if (typeof data === "string" && (data.startsWith("http") || data.startsWith("data:"))) { a.href = data; } else { var blob = new Blob([data], { type: fullFileType }); a.href = URL.createObjectURL(blob); } a.download = "".concat(fileName, ".").concat(fileType); a.click(); URL.revokeObjectURL(a.href); return; }