@chayns-components/core
Version:
A set of beautiful React components for developing your own applications with chayns.
63 lines (62 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isValidFileType = exports.hasDuplicate = exports.getIconByMimeType = exports.getHumanSize = exports.filterDuplicateFileUrls = exports.filterDuplicateFile = exports.MIME_TYPE_MAPPING = void 0;
const hasDuplicate = (items, newItem, comparator) => items.some(item => comparator(item, newItem));
exports.hasDuplicate = hasDuplicate;
const filterDuplicateFile = ({
files,
newFile
}) => hasDuplicate(files, newFile, (a, b) => a.name === b.name && a.size === b.size);
exports.filterDuplicateFile = filterDuplicateFile;
const filterDuplicateFileUrls = ({
files,
newFile
}) => hasDuplicate(files, newFile, (a, b) => a === b);
exports.filterDuplicateFileUrls = filterDuplicateFileUrls;
const getHumanSize = bytes => {
const FILE_SIZE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
let size = bytes || 0;
let unitIndex = 0;
while (size >= 1024) {
size /= 1024;
unitIndex += 1;
}
size = Math.round(size * 10) / 10;
return `${size.toString().replace('.', ',')} ${FILE_SIZE_UNITS[unitIndex] ?? ''}`;
};
exports.getHumanSize = getHumanSize;
const isValidFileType = ({
types,
file
}) => {
const allowedTypesArray = types.split(',').map(type => type.trim());
const fileType = file.type;
return allowedTypesArray.some(type => {
if (type.endsWith('/*')) {
const baseType = type.slice(0, -2); // remove '/*'
return fileType.startsWith(baseType);
}
return fileType === type;
});
};
exports.isValidFileType = isValidFileType;
const MIME_TYPE_MAPPING = exports.MIME_TYPE_MAPPING = {
// Haupttypen
'application/pdf': 'fa fa-file-pdf',
'application/zip': 'fa fa-file-archive',
'application/msword': 'fa fa-file-word',
'application/vnd.ms-excel': 'fa fa-file-excel',
// Typen mit Wildcards
'application/vnd.openxmlformats-officedocument.': 'fa fa-file-word',
'application/x-': 'fa fa-file-archive',
// Addiere nur spezifische Fälle
'text/pdf': 'fa fa-file-pdf'
};
const getIconByMimeType = mimeType => {
const matchedType = Object.keys(MIME_TYPE_MAPPING).find(type => mimeType === null || mimeType === void 0 ? void 0 : mimeType.startsWith(type));
return MIME_TYPE_MAPPING[matchedType] || 'fa fa-file';
};
exports.getIconByMimeType = getIconByMimeType;
//# sourceMappingURL=file.js.map