@@ -952,6 +1036,8 @@
const gotoBar = document.getElementById("goto-bar");
const gotoInput = document.getElementById("goto-input");
const menuBar = document.getElementById("menu-bar");
+ const previewPanel = document.getElementById("preview-panel");
+ const preview = document.getElementById("preview");
// -- State
let fileName = "Untitled";
@@ -964,13 +1050,14 @@
let lastReplace = "";
let notifTimer = null;
let replaceMode = false;
+ let markdownPreview = false;
// -- Initial Content
editor.value = [
"Pascar",
"======",
"",
- "A faithful offline recreation of the classic MS-DOS Editor",
+ "A browser-based offline recreation of the classic MS-DOS Editor for the modern needs of today.",
"Runs entirely in your browser - no server, no internet.",
"",
"QUICK START",
@@ -1037,6 +1124,36 @@
(isModified ? "* " : "") + fileName + " - Pascar";
}
+ function isMarkdownFile(name) {
+ return /\.md$/i.test(name);
+ }
+
+ function setMarkdownPreview(active) {
+ markdownPreview = active;
+ previewPanel.classList.toggle("active", active);
+ if (active) {
+ renderMarkdownPreview();
+ } else {
+ preview.innerHTML = "";
+ }
+ }
+
+ function renderMarkdownPreview() {
+ if (!markdownPreview) return;
+ if (typeof marked === "undefined") {
+ preview.innerHTML =
+ "
Marked.js failed to load. Markdown preview is unavailable.
";
+ return;
+ }
+
+ try {
+ preview.innerHTML = marked.parse(editor.value || "");
+ } catch (err) {
+ preview.innerHTML =
+ `
Error rendering markdown:
${escHtml(err.message)}`;
+ }
+ }
+
// -- Notifications
function showNotif(msg, dur = 2500) {
notif.textContent = msg;
@@ -1049,6 +1166,7 @@
editor.addEventListener("input", () => {
isModified = true;
updateAll();
+ if (markdownPreview) renderMarkdownPreview();
});
editor.addEventListener("keyup", updateStatus);
editor.addEventListener("click", updateStatus);
@@ -1450,6 +1568,7 @@
fileName = "Untitled";
fileHandle = null;
isModified = false;
+ setMarkdownPreview(false);
updateAll();
editor.focus();
}
@@ -1499,6 +1618,7 @@
fileName = file.name;
editor.value = await file.text();
isModified = false;
+ setMarkdownPreview(isMarkdownFile(fileName));
updateAll();
editor.focus();
showNotif(`Opened: ${fileName}`);
@@ -1519,6 +1639,7 @@
reader.onload = (e) => {
editor.value = e.target.result;
isModified = false;
+ setMarkdownPreview(isMarkdownFile(fileName));
updateAll();
editor.focus();
showNotif(`Opened: ${fileName}`);
@@ -1582,6 +1703,7 @@
await writable.write(editor.value);
await writable.close();
isModified = false;
+ setMarkdownPreview(isMarkdownFile(fileName));
updateStatus();
showNotif(`Saved: ${fileName}`);
} catch (err) {
@@ -1988,4 +2110,4 @@
-
+