@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
JavaScript
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;
}