UNPKG

@wordpress/upload-media

Version:
64 lines (63 loc) 1.79 kB
// 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