diff options
| author | Nikhil M Warrier <nikhilmwarrier@disroot.org> | 2026-09-05 21:50:53 +0530 |
|---|---|---|
| committer | Nikhil M Warrier <nikhilmwarrier@disroot.org> | 2026-09-05 21:50:53 +0530 |
| commit | 1e12432ba12b5056904a39115cc461c0de51f51d (patch) | |
| tree | 497e1e64dc3cbc72c2dbb0b19ccb239b93a1c178 /assets/index.js | |
| parent | 767745412010ec2758714c04e80f77f68b12df15 (diff) | |
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
Diffstat (limited to 'assets/index.js')
| -rw-r--r-- | assets/index.js | 17 |
1 files changed, 17 insertions, 0 deletions
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 + } } /** |
