DocSpace-client/packages/shared/utils/image-helpers.ts

121 lines
2.0 KiB
TypeScript
Raw Normal View History

/* eslint-disable import/no-dynamic-require */
/* eslint-disable global-require */
const getSvgByName = (name: string) => `${name.replace(/^\./, "")}.svg`;
const getUrlByName = (name: string, size: string | number, type = "") =>
2023-11-17 13:49:24 +00:00
require(`PUBLIC_DIR/images/icons/${size}${type}/${getSvgByName(name)}?url`);
2022-12-28 15:23:22 +00:00
const getIconsMap = (
size: string | number,
formats: string[],
folders: string[],
rooms: string[] = [],
) => {
const mapIcons = (icons: string[], type = ""): [string, string][] =>
2023-11-17 13:49:24 +00:00
icons.map((icon) => [getSvgByName(icon), getUrlByName(icon, size, type)]);
2022-12-28 15:23:22 +00:00
2023-11-17 13:49:24 +00:00
const formatsMap = mapIcons(formats);
const foldersMap = mapIcons(folders, "/folder");
const roomsMap = mapIcons(rooms, "/room");
2022-12-28 15:23:22 +00:00
const arr: [string, string][] = [...formatsMap, ...foldersMap, ...roomsMap];
return new Map(arr);
2023-11-17 13:49:24 +00:00
};
const formatIcons = [
".avi",
".csv",
".djvu",
".doc",
".docm",
".docx",
".docxf",
".dotx",
".dps",
".dpt",
".dvd",
".epub",
".et",
".ett",
".fb2",
".flv",
".fodt",
".iaf",
".ics",
".m2ts",
".mht",
".mhtml",
".mkv",
".mov",
".mp4",
".mpg",
".odp",
".ods",
".odt",
".oform",
".otp",
".ots",
".ott",
".pdf",
".pot",
".pps",
".ppsx",
".ppt",
".pptm",
".pptx",
".rtf",
".stw",
".svg",
".sxc",
".sxi",
".sxw",
".txt",
".webm",
".wps",
".wpt",
".xls",
".xlsm",
".xlsx",
".xml",
".xps",
"file_archive",
"file",
"folder",
"html",
"image",
"sound",
];
const folderIcons = [
"box",
2023-11-17 14:32:52 +00:00
"done",
2023-11-17 13:49:24 +00:00
"dropbox",
"google",
2023-11-17 14:32:52 +00:00
"inProgress",
2023-11-17 13:49:24 +00:00
"kdrive",
"nextcloud",
"onedrive",
"owncloud",
"sharepoint",
"webdav",
"yandex",
];
const roomIcons = [
"archive",
"custom",
"editing",
"filling.form",
2023-11-17 14:32:52 +00:00
"form",
2023-11-17 13:49:24 +00:00
"public",
"review",
"view.only",
];
export const iconSize24 = getIconsMap(24, formatIcons, folderIcons);
export const iconSize32 = getIconsMap(32, formatIcons, folderIcons, roomIcons);
export const iconSize64 = getIconsMap(64, formatIcons, folderIcons);
export const iconSize96 = getIconsMap(96, formatIcons, folderIcons);