37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
|
|
window.WBPopups = (() => {
|
||
|
|
const cache = new Map();
|
||
|
|
const docs = {
|
||
|
|
cli: { title: "CLI Guide", template: "cli" },
|
||
|
|
faq: { title: "Help & FAQ", template: "faq" },
|
||
|
|
dailyQuota: { title: "Upload limits", template: "upload-limits" },
|
||
|
|
about: { title: "About WarpBox", template: "about", about: true },
|
||
|
|
examples: { title: "Examples", template: "examples" },
|
||
|
|
};
|
||
|
|
|
||
|
|
async function loadTemplate(name) {
|
||
|
|
if (cache.has(name)) return cache.get(name);
|
||
|
|
const response = await fetch(`/static/popups/${name}.html`, { credentials: "same-origin" });
|
||
|
|
if (!response.ok) throw new Error(`Could not load popup template: ${name}`);
|
||
|
|
const template = await response.text();
|
||
|
|
cache.set(name, template);
|
||
|
|
return template;
|
||
|
|
}
|
||
|
|
|
||
|
|
async function renderTemplate(name, data = {}) {
|
||
|
|
const template = await loadTemplate(name);
|
||
|
|
return window.WBUtils.renderTemplate(template, data);
|
||
|
|
}
|
||
|
|
|
||
|
|
async function renderDoc(name, data = {}) {
|
||
|
|
const doc = docs[name];
|
||
|
|
if (!doc) return null;
|
||
|
|
return {
|
||
|
|
title: doc.title,
|
||
|
|
about: Boolean(doc.about),
|
||
|
|
html: await renderTemplate(doc.template, data),
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
return { renderTemplate, renderDoc };
|
||
|
|
})();
|