@wordpress/upload-media
Version:
Core media upload logic.
97 lines (89 loc) • 2.38 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cloneFile = cloneFile;
exports.convertBlobToFile = convertBlobToFile;
exports.getFileBasename = getFileBasename;
exports.getFileExtension = getFileExtension;
exports.getFileNameFromUrl = getFileNameFromUrl;
exports.renameFile = renameFile;
var _url = require("@wordpress/url");
var _i18n = require("@wordpress/i18n");
/**
* WordPress dependencies
*/
/**
* Converts a Blob to a File with a default name like "image.png".
*
* If it is already a File object, it is returned unchanged.
*
* @param fileOrBlob Blob object.
* @return File object.
*/
function convertBlobToFile(fileOrBlob) {
if (fileOrBlob instanceof File) {
return fileOrBlob;
}
// Extension is only an approximation.
// The server will override it if incorrect.
const ext = fileOrBlob.type.split('/')[1];
const mediaType = 'application/pdf' === fileOrBlob.type ? 'document' : fileOrBlob.type.split('/')[0];
return new File([fileOrBlob], `${mediaType}.${ext}`, {
type: fileOrBlob.type
});
}
/**
* Renames a given file and returns a new file.
*
* Copies over the last modified time.
*
* @param file File object.
* @param name File name.
* @return Renamed file object.
*/
function renameFile(file, name) {
return new File([file], name, {
type: file.type,
lastModified: file.lastModified
});
}
/**
* Clones a given file object.
*
* @param file File object.
* @return New file object.
*/
function cloneFile(file) {
return renameFile(file, file.name);
}
/**
* Returns the file extension from a given file name or URL.
*
* @param file File URL.
* @return File extension or null if it does not have one.
*/
function getFileExtension(file) {
return file.includes('.') ? file.split('.').pop() || null : null;
}
/**
* Returns file basename without extension.
*
* For example, turns "my-awesome-file.jpeg" into "my-awesome-file".
*
* @param name File name.
* @return File basename.
*/
function getFileBasename(name) {
return name.includes('.') ? name.split('.').slice(0, -1).join('.') : name;
}
/**
* Returns the file name including extension from a URL.
*
* @param url File URL.
* @return File name.
*/
function getFileNameFromUrl(url) {
return (0, _url.getFilename)(url) || (0, _i18n._x)('unnamed', 'file name');
}
//# sourceMappingURL=utils.js.map
;