blog/tblog/static/js/write.js

58 lines
1.8 KiB
JavaScript
Raw Normal View History

2024-12-31 19:56:46 -05:00
let text = document.querySelector("#plain-editor textarea").value;
let format = document.getElementById("format").value;
const modes = {
markdown: "ace/mode/markdown",
html: "ace/mode/html",
plain: "ace/mode/text",
mono: "ace/mode/text"
}
function updatePreview(raw) {
document.getElementById("preview").innerHTML = toHTML(format, raw);
document.getElementById("character-count").innerText = (new Intl.NumberFormat).format(raw.length);
if (raw.length > 500_000) {
document.getElementById("character-count").classList.add("error");
document.getElementById("character-count").classList.remove("warning");
} else if (raw.length >= 498_000) {
document.getElementById("character-count").classList.remove("error");
document.getElementById("character-count").classList.add("warning");
} else {
document.getElementById("character-count").classList.remove("error");
document.getElementById("character-count").classList.remove("warning");
}
text = raw;
}
let editor = createEditor("ace-editor", text, format, (raw) => {
updatePreview(raw);
document.querySelector("#plain-editor textarea").value = raw;
});
document.querySelector("#plain-editor textarea").addEventListener("input", function() {
updatePreview(this.value);
});
document.getElementById("use-plain-editor").addEventListener("input", function() {
if (this.checked) {
document.getElementById("editor-area").dataset.editor = "plain";
} else {
document.getElementById("editor-area").dataset.editor = "ace";
editor.setValue(text);
}
});
document.getElementById("format").addEventListener("change", function() {
format = this.value;
editor.getSession().setMode(modes[format]);
updatePreview(text);
});
updatePreview(text);
window.onbeforeunload = (event) => {
return "Your changes won't be saved.";
}