mirror of
https://github.com/sune-org/sune.git
synced 2026-04-07 07:52:13 +00:00
This build was committed by a bot.
This commit is contained in:
@@ -697,6 +697,53 @@ var deserializeThreadName = (n) => {
|
||||
};
|
||||
};
|
||||
//#endregion
|
||||
//#region src/sune-html.js
|
||||
var resolveSuneSrc = (src) => {
|
||||
if (!src) return null;
|
||||
if (src.startsWith("gh://")) {
|
||||
const parts = src.substring(5).split("/");
|
||||
if (parts.length < 3) return null;
|
||||
const [owner, repo, ...filePathParts] = parts;
|
||||
return `https://raw.githubusercontent.com/${owner}/${repo}/main/${filePathParts.join("/")}`;
|
||||
}
|
||||
return src;
|
||||
};
|
||||
var processSuneIncludes = async (html, depth = 0) => {
|
||||
if (depth > 5) return "<!-- Sune include depth limit reached -->";
|
||||
if (!html) return "";
|
||||
const c = document.createElement("div");
|
||||
c.innerHTML = html;
|
||||
for (const n of [...c.querySelectorAll("sune")]) if (n.hasAttribute("src")) {
|
||||
if (n.hasAttribute("private") && depth > 0) {
|
||||
n.remove();
|
||||
continue;
|
||||
}
|
||||
const s = n.getAttribute("src"), u = resolveSuneSrc(s);
|
||||
if (!u) {
|
||||
n.replaceWith(document.createComment(` Invalid src: ${esc(s)} `));
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
const r = await fetch(u);
|
||||
if (!r.ok) throw new Error(`HTTP ${r.status}`);
|
||||
const d = await r.json(), o = Array.isArray(d) ? d[0] : d, h = [o?.settings?.extension_html || "", o?.settings?.html || ""].join("\n");
|
||||
n.replaceWith(document.createRange().createContextualFragment(await processSuneIncludes(h, depth + 1)));
|
||||
} catch (e) {
|
||||
n.replaceWith(document.createComment(` Fetch failed: ${esc(u)} `));
|
||||
}
|
||||
} else n.replaceWith(document.createRange().createContextualFragment(n.innerHTML));
|
||||
return c.innerHTML;
|
||||
};
|
||||
var renderSuneHTML = async () => {
|
||||
const SUNE = window.SUNE;
|
||||
const h = await processSuneIncludes([SUNE.extension_html, SUNE.html].map((x) => (x || "").trim()).join("\n"));
|
||||
const c = el.suneHtml;
|
||||
c.innerHTML = "";
|
||||
const t = h.trim();
|
||||
c.classList.toggle("hidden", !t);
|
||||
t && (c.appendChild(document.createRange().createContextualFragment(h)), window.Alpine?.initTree(c));
|
||||
};
|
||||
//#endregion
|
||||
//#region \0vite/preload-helper.js
|
||||
var scriptRel = "modulepreload";
|
||||
var assetsURL = function(dep) {
|
||||
@@ -1012,49 +1059,6 @@ var getModelShort = (m) => {
|
||||
const mm = m || SUNE.model || "";
|
||||
return mm.includes("/") ? mm.split("/").pop() : mm;
|
||||
};
|
||||
var resolveSuneSrc = (src) => {
|
||||
if (!src) return null;
|
||||
if (src.startsWith("gh://")) {
|
||||
const parts = src.substring(5).split("/");
|
||||
if (parts.length < 3) return null;
|
||||
const [owner, repo, ...filePathParts] = parts;
|
||||
return `https://raw.githubusercontent.com/${owner}/${repo}/main/${filePathParts.join("/")}`;
|
||||
}
|
||||
return src;
|
||||
};
|
||||
var processSuneIncludes = async (html, depth = 0) => {
|
||||
if (depth > 5) return "<!-- Sune include depth limit reached -->";
|
||||
if (!html) return "";
|
||||
const c = document.createElement("div");
|
||||
c.innerHTML = html;
|
||||
for (const n of [...c.querySelectorAll("sune")]) if (n.hasAttribute("src")) {
|
||||
if (n.hasAttribute("private") && depth > 0) {
|
||||
n.remove();
|
||||
continue;
|
||||
}
|
||||
const s = n.getAttribute("src"), u = resolveSuneSrc(s);
|
||||
if (!u) {
|
||||
n.replaceWith(document.createComment(` Invalid src: ${esc(s)} `));
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
const r = await fetch(u);
|
||||
if (!r.ok) throw new Error(`HTTP ${r.status}`);
|
||||
const d = await r.json(), o = Array.isArray(d) ? d[0] : d, h = [o?.settings?.extension_html || "", o?.settings?.html || ""].join("\n");
|
||||
n.replaceWith(document.createRange().createContextualFragment(await processSuneIncludes(h, depth + 1)));
|
||||
} catch (e) {
|
||||
n.replaceWith(document.createComment(` Fetch failed: ${esc(u)} `));
|
||||
}
|
||||
} else n.replaceWith(document.createRange().createContextualFragment(n.innerHTML));
|
||||
return c.innerHTML;
|
||||
};
|
||||
var renderSuneHTML = async () => {
|
||||
const h = await processSuneIncludes([SUNE.extension_html, SUNE.html].map((x) => (x || "").trim()).join("\n")), c = el.suneHtml;
|
||||
c.innerHTML = "";
|
||||
const t = h.trim();
|
||||
c.classList.toggle("hidden", !t);
|
||||
t && (c.appendChild(document.createRange().createContextualFragment(h)), window.Alpine?.initTree(c));
|
||||
};
|
||||
var reflectActiveSune = async () => {
|
||||
const a = SUNE.active;
|
||||
el.suneBtnTop.title = `Settings — ${a.name}`;
|
||||
Reference in New Issue
Block a user