-
Notifications
You must be signed in to change notification settings - Fork 0
/
wiki.js
117 lines (98 loc) · 3.46 KB
/
wiki.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
const url = new URL(window.location.href);
// Get the value of the 'page' parameter
renderBlocks = url.searchParams.get('render');
if (renderBlocks == null) {
renderBlocks = true;
} else {
renderBlocks = renderBlocks == 'true';
}
loadedPage = url.searchParams.get('page');
if (loadedPage == null) {
loadedPage = 'homepage.xml';
} else if (!loadedPage.includes(".xml")) {
loadedPage = loadedPage + ".xml"
}
function convert() {
if (!renderBlocks) {
return null;
}
scratchblocks.renderMatching('pre.blocks', {
style: 'scratch3', // Optional, defaults to 'scratch2'.
scale: 0.75, // Optional, defaults to 1
});
scratchblocks.renderMatching("code.b", {
inline: true,
style: 'scratch3', // Optional, defaults to 'scratch2'.
scale: 0.6, // Optional, defaults to 1
});
renderKatex();
}
function renderToggle() {
url.searchParams.set('render', !(renderBlocks));
// Redirect to the updated URL
window.location.href = url.href;
}
function loadFile() {
fetch('pages/' + loadedPage)
.then(response => response.text())
.then(content => {
bodyContent = '<button onclick="renderToggle();"> render toggle </button><p>current page: ' + url.searchParams.get('page') + '<br>switch to page: </p><input type="text" id="switchPage" class="switchPage">' + content;
document.body.innerHTML = bodyContent;
console.log(document.body.innerHTML);
convert(); // Call your conversion function after loading content
var inputElement = document.getElementById("switchPage");
inputElement.addEventListener("change", handleInputChange);
})
.catch(error => {
console.error('Error loading file:', error);
});
}
function handleInputChange() {
var inputElement = document.getElementById("switchPage");
var inputValue = inputElement.value;
console.log("new page location: ", inputValue);
url.searchParams.set('page', inputValue);
// Redirect to the updated URL
window.location.href = url.href;
}
function convertscratchblocks() {
try {
var text = document.getElementById("text");
text.value = text.value
.replaceAll("<", "<")
.replaceAll(">", ">");
} catch {}
}
function renderScratchBlocks() {
var inputDiv = document.getElementById("block-render");
inputDiv.innerHTML = "<pre class=\"blocksInput\" id=\"inputPre\"></pre>"
var inputPre = document.getElementById("inputPre");
var text = document.getElementById("sbInput");
inputPre.innerHTML = text.value;
scratchblocks.renderMatching('pre.blocksInput', {
style: 'scratch3', // Optional, defaults to 'scratch2'.
scale: 1, // Optional, defaults to 1
});
}
function renderScratchBlocksInput() {
if (document.getElementById("realTime").checked) {renderScratchBlocks()}
}
function removeGarbageHtmlKatex(tex) {
return tex.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
}
function renderKatex() {
mathElements = Array.from(document.getElementsByClassName("math"));
mathElements.forEach(mathElement => {
katex.render(removeGarbageHtmlKatex(mathElement.innerHTML), mathElement, {
throwOnError: false,
});
mathElement.style.fontSize = "2em";
});
mathElements = Array.from(document.getElementsByClassName("mathInline"));
mathElements.forEach(mathElement => {
katex.render(removeGarbageHtmlKatex(mathElement.innerHTML), mathElement, {
throwOnError: false,
});
mathElement.style.fontSize = "1.21em";
});
}