Files
AEmotionStudio-ComfyUI-Magn…/web/sidebar/SidebarAbout.js
T

86 lines
3.6 KiB
JavaScript

const REPO = "https://github.com/AEmotionStudio/ComfyUI-MagnifyGlass";
const DISCORD = "https://discord.gg/UzC9353mfp";
const KOFI = "https://ko-fi.com/aemotionstudio";
const WEBSITE = "https://aemotionstudio.org/";
const LINKS = [
["pi-github", "GitHub", REPO],
["pi-exclamation-circle", "Report an issue", `${REPO}/issues`],
["pi-discord", "Discord", DISCORD],
["pi-youtube", "YouTube", "https://www.youtube.com/@aemotionstudio/videos"],
["pi-heart", "Ko-fi", KOFI],
["pi-globe", "Website", WEBSITE]
];
const PACKS = [
["Enhanced Links & Nodes", "Animated links and nodes that keep every native click.", "https://github.com/AEmotionStudio/ComfyUI-EnhancedLinksandNodes"],
["FFMPEGA", "Video editing in natural language with an FFMPEG agent.", "https://github.com/AEmotionStudio/ComfyUI-FFMPEGA"],
["ShaderNoiseKSampler", "A KSampler that blends shader noise into generation.", "https://github.com/AEmotionStudio/ComfyUI-ShaderNoiseKSampler"],
["DiscordSend", "Send images and videos straight to Discord.", "https://github.com/AEmotionStudio/ComfyUI-DiscordSend"],
["RefCap", "Reference capture for MiniMax H3.", "https://github.com/AEmotionStudio/ComfyUI-RefCap"],
["PROMPTA", "Natural language into model-specific prompts.", "https://github.com/AEmotionStudio/ComfyUI-PROMPTA"],
["Chat2Me", "Chat with a character that replies in video.", "https://github.com/aemotion-studio/ComfyUI-Chat2Me"]
];
const ABOUT_BADGES = [
{ label: `MagnifyGlass ${"1.14.0"}`, url: REPO, icon: "pi pi-github" }
];
const STUDIO = "Developed by Æmotion Studio, MagnifyGlass brings a customizable magnifying glass and node inspector to your ComfyUI workflow. Contributions are welcome!";
function link(href, text) {
const a = document.createElement("a");
a.href = href;
a.target = "_blank";
a.rel = "noopener noreferrer";
a.textContent = text;
return a;
}
function icon(name) {
const i = document.createElement("i");
i.className = `pi ${name}`;
i.setAttribute("aria-hidden", "true");
return i;
}
function renderAbout() {
const about = document.createElement("section");
about.className = "magnify-about";
const brand = document.createElement("div");
brand.className = "magnify-brand";
const heading = document.createElement("h3");
heading.className = "magnify-heading";
heading.textContent = `MagnifyGlass ${"1.14.0"}`;
const byline = document.createElement("p");
byline.className = "magnify-hint";
byline.textContent = "by Æmotion Studio · GPL-3.0";
const text = document.createElement("div");
text.append(heading, byline);
brand.append(icon("pi-search"), text);
const actions = document.createElement("div");
actions.className = "magnify-actions";
for (const [name, label, href] of LINKS) {
const a = link(href, label);
a.className = "magnify-link";
a.prepend(icon(name));
actions.appendChild(a);
}
const studio = document.createElement("details");
studio.className = "magnify-studio";
const summary = document.createElement("summary");
summary.textContent = "More from Æmotion Studio";
const blurb = document.createElement("p");
blurb.textContent = STUDIO;
const packs = document.createElement("ul");
packs.className = "magnify-packs";
for (const [name, what, href] of PACKS) {
const item = document.createElement("li");
const hint = document.createElement("span");
hint.className = "magnify-hint";
hint.textContent = what;
item.append(link(href, name), hint);
packs.appendChild(item);
}
studio.append(summary, blurb, packs);
about.append(brand, actions, studio);
return about;
}
export {
ABOUT_BADGES,
renderAbout
};