@wordpress/upload-media
Version:
Core media upload logic.
64 lines (63 loc) • 1.79 kB
JavaScript
// packages/upload-media/src/utils.ts
import { getFilename } from "@wordpress/url";
import { _x } from "@wordpress/i18n";
function convertBlobToFile(fileOrBlob) {
if (fileOrBlob instanceof File) {
return fileOrBlob;
}
if ("name" in fileOrBlob && typeof fileOrBlob.name === "string") {
return new File([fileOrBlob], fileOrBlob.name, {
type: fileOrBlob.type,
lastModified: fileOrBlob.lastModified
});
}
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
});
}
function renameFile(file, name) {
return new File([file], name, {
type: file.type,
lastModified: file.lastModified
});
}
function cloneFile(file) {
return renameFile(file, file.name);
}
function getFileExtension(file) {
return file.includes(".") ? file.split(".").pop() || null : null;
}
function getFileBasename(name) {
return name.includes(".") ? name.split(".").slice(0, -1).join(".") : name;
}
function getFileNameFromUrl(url) {
return getFilename(url) || _x("unnamed", "file name");
}
function isAnimatedGif(buffer) {
const view = new Uint8Array(buffer);
if (view.length < 4 || view[0] !== 71 || view[1] !== 73 || view[2] !== 70 || view[3] !== 56) {
return false;
}
let frameCount = 0;
for (let i = 0; i < view.length - 2; i++) {
if (view[i] === 0 && view[i + 1] === 33 && view[i + 2] === 249) {
frameCount++;
if (frameCount > 1) {
return true;
}
}
}
return false;
}
export {
cloneFile,
convertBlobToFile,
getFileBasename,
getFileExtension,
getFileNameFromUrl,
isAnimatedGif,
renameFile
};
//# sourceMappingURL=utils.mjs.map