@wordpress/upload-media
Version:
Core media upload logic.
95 lines (93 loc) • 3.09 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/upload-media/src/utils.ts
var utils_exports = {};
__export(utils_exports, {
cloneFile: () => cloneFile,
convertBlobToFile: () => convertBlobToFile,
getFileBasename: () => getFileBasename,
getFileExtension: () => getFileExtension,
getFileNameFromUrl: () => getFileNameFromUrl,
isAnimatedGif: () => isAnimatedGif,
renameFile: () => renameFile
});
module.exports = __toCommonJS(utils_exports);
var import_url = require("@wordpress/url");
var import_i18n = require("@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 (0, import_url.getFilename)(url) || (0, import_i18n._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;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
cloneFile,
convertBlobToFile,
getFileBasename,
getFileExtension,
getFileNameFromUrl,
isAnimatedGif,
renameFile
});
//# sourceMappingURL=utils.cjs.map