UNPKG

@brizy/cloud-media-upload

Version:
88 lines (87 loc) 3.58 kB
"use strict"; 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;