mirror of
https://github.com/khairul169/home-lab.git
synced 2025-04-28 16:49:36 +07:00
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { ClassInput, create as createTwrnc } from "twrnc";
|
|
import base64 from "base-64";
|
|
import utf8 from "utf8";
|
|
|
|
export const tw = createTwrnc(require(`../../tailwind.config.js`));
|
|
|
|
export const cn = (...args: ClassInput[]) => {
|
|
if (Array.isArray(args[0])) {
|
|
return tw.style(...args[0]);
|
|
}
|
|
|
|
return tw.style(...args);
|
|
};
|
|
|
|
export const base64encode = (str?: string | null) => {
|
|
return str ? base64.encode(str) : null;
|
|
};
|
|
|
|
export const base64decode = (str?: string | null) => {
|
|
return str ? base64.decode(str) : null;
|
|
};
|
|
|
|
export const encodeUrl = (str?: string | null) => {
|
|
return str ? encodeURIComponent(base64encode(utf8.encode(str))) : null;
|
|
};
|
|
|
|
export const decodeUrl = (str?: string | null) => {
|
|
return str ? decodeURIComponent(utf8.decode(base64decode(str))) : null;
|
|
};
|
|
|
|
export const getFileType = (path?: string | null) => {
|
|
const ext = path?.split(".").pop();
|
|
const videoExts = "mp4,mkv,webm,avi,mov";
|
|
if (videoExts.split(",").includes(ext)) {
|
|
return "video";
|
|
}
|
|
|
|
const imgExts = "jpeg,jpg,png,gif,webp,avif,svg,bmp,ico,tif,tiff";
|
|
if (imgExts.split(",").includes(ext)) {
|
|
return "image";
|
|
}
|
|
|
|
const docExts = "pdf,doc,docx,xls,xlsx,ppt,pptx";
|
|
if (docExts.split(",").includes(ext)) {
|
|
return "document";
|
|
}
|
|
|
|
const audioExts = "mp3,ogg,wav,flac,aac,amr";
|
|
if (audioExts.split(",").includes(ext)) {
|
|
return "audio";
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
export const getFilename = (path?: string | null) => {
|
|
if (!path) {
|
|
return null;
|
|
}
|
|
|
|
let fname = path.split("/").pop()?.split(".").slice(0, -1).join(".");
|
|
if (fname.indexOf("?") > -1) {
|
|
fname = fname.substring(0, fname.indexOf("?"));
|
|
}
|
|
return fname;
|
|
};
|