From 1e12432ba12b5056904a39115cc461c0de51f51d Mon Sep 17 00:00:00 2001 From: Nikhil M Warrier Date: Sat, 5 Sep 2026 21:50:53 +0530 Subject: Display README.md of current folder via Marked + DOMPurify - Vendor marked v15.0.12 and DOMPurify 3.4.14 into assets/vendor/ - Fetch README.md from the current directory when listed, render markdown, sanitize with DOMPurify, and show in a themed panel - Style the rendered markdown with existing design tokens --- assets/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'assets/index.js') diff --git a/assets/index.js b/assets/index.js index f15ce9c..41df7b3 100644 --- a/assets/index.js +++ b/assets/index.js @@ -135,6 +135,7 @@ async function ready() { $pathsTableBody = document.querySelector(".paths-body"); $uploadersTable = document.querySelector(".uploaders-table"); $emptyFolder = document.querySelector(".empty-folder"); + $readme = document.querySelector(".readme"); $editor = document.querySelector(".editor"); $loginBtn = document.querySelector(".login-btn"); $logoutBtn = document.querySelector(".logout-btn"); @@ -399,6 +400,22 @@ async function setupIndexPage() { if (DATA.user) { setupDownloadWithToken(); } + + await setupReadme(); +} + +async function setupReadme() { + if (typeof marked === "undefined" || typeof DOMPurify === "undefined") return; + if (!DATA.paths.some(p => p.name === "README.md")) return; + try { + const res = await fetch(newUrl("README.md")); + if (!res.ok) return; + const text = await res.text(); + $readme.innerHTML = DOMPurify.sanitize(marked.parse(text)); + $readme.classList.remove("hidden"); + } catch (e) { + // readme is best-effort; hide silently on any failure + } } /** -- cgit v1.2.3