@brizy/cloud-media-upload
Version:
Upload media in Brizy Cloud
88 lines (87 loc) • 3.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeUrl = exports.getTypeOrDocument = exports.getBase64 = exports.fromValToMediaGalleryParam = exports.onInsertFiles = exports.fromItemToImage = exports.getAcceptableTypes = void 0;
const types_1 = require("@brizy/media-gallery/lib/pages/mediaLibrary/types/types");
const mimes_json_1 = __importDefault(require("./mimes.json"));
//#region exact like in builder
var TypesOfExtensions;
(function (TypesOfExtensions) {
TypesOfExtensions["Image"] = "image";
TypesOfExtensions["Video"] = "video";
TypesOfExtensions["Audio"] = "audio";
})(TypesOfExtensions || (TypesOfExtensions = {}));
const isTypeOfExtension = (type) => Object.values(TypesOfExtensions).includes(type);
const getAllMimesOfType = (type) => Object.values(mimes_json_1.default).reduce((acc, value) => {
const result = value.filter((i) => i.includes(type));
return result.length ? [...acc, ...result] : acc;
}, []);
const getAllMimes = () => Object.values(mimes_json_1.default).flat();
function isT(v) {
return typeof v !== "undefined" && v !== null;
}
const fromExtensionsToMimeTypes = (extensions) => extensions.length
? extensions
.reduce((acc, i) => {
if (i.includes("*")) {
const type = i.split("/")[0];
return isTypeOfExtension(type) ? [...acc, ...getAllMimesOfType(type)] : acc;
}
else {
const key = i.replace(/\./g, "");
return [...acc, ...mimes_json_1.default[key]];
}
}, [])
.filter(isT)
: getAllMimes();
//#endregion
const getAcceptableTypes = (acceptedExtensions) => fromExtensionsToMimeTypes(acceptedExtensions).filter(isT);
exports.getAcceptableTypes = getAcceptableTypes;
const fromItemToImage = ({ name, fileName, extension, altTitle }) => ({
uid: name,
fileName: `${fileName}.${extension}`,
altTitle,
});
exports.fromItemToImage = fromItemToImage;
const onInsertFiles = (res, rej, handleClose) => (payload) => {
if (Array.isArray(payload)) {
rej(new Error("Failed to upload file. Please upload a valid file."));
}
else {
res((0, exports.fromItemToImage)(payload));
handleClose();
}
};
exports.onInsertFiles = onInsertFiles;
const fromValToMediaGalleryParam = (key, value) => (key && value ? { [key]: value } : {});
exports.fromValToMediaGalleryParam = fromValToMediaGalleryParam;
const getBase64 = async (file) => {
return await new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (e) => {
typeof e.target?.result === "string" ? resolve(e.target?.result) : reject("Error read file.");
};
reader.onerror = () => {
reject("Error read file.");
};
reader.onabort = () => {
reject("Abort read file.");
};
reader.readAsDataURL(file);
});
};
exports.getBase64 = getBase64;
const getTypeOrDocument = (type) => types_1.ApiFileTypes.VIDEO === type || types_1.ApiFileTypes.AUDIO === type || types_1.ApiFileTypes.IMAGE === type
? type
: types_1.ApiFileTypes.DOCUMENT;
exports.getTypeOrDocument = getTypeOrDocument;
const makeUrl = (baseUrl, params = {}) => {
const url = new URL(baseUrl);
Object.entries(params).forEach(([key, value]) => {
url.searchParams.append(key, value);
});
return url.toString();
};
exports.makeUrl = makeUrl;