Handy UI for browsing the /tg/station wiki while powergaming
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

95 lines
2.6 KiB

import { chemistryScript, processChemistry } from "./pages/chemistry";
import { processVirology, virologyScript } from "./pages/virology";
import { processFood, foodScript } from "./pages/food";
import { processDrinks, drinkScript } from "./pages/drinks";
import { genericScript } from "./pages/generic";
import { processGlobal } from "./pages/global";
import { welcomeScript } from "./pages/welcome";
// This is used for cache busting when userscript changes significantly.
// Only change it when you made changes to the processHTML part!
export const PAGE_VERSIONS = {
Infections: "fcebeda2fddb46d924f4538cd9c0daeb55aa4c9b",
Guide_to_food_and_drinks: "131e010df66ed689d31df53c3ca17ad16635a827",
Guide_to_chemistry: "5074d6180fc8b283bac00b99c6aa2325b797da6b",
$DEFAULT: "5074d6180fc8b283bac00b99c6aa2325b797da6b",
};
const MAX_WIDTH = 440;
export function processHTML(root: HTMLElement, docname: string): void {
processGlobal(root, docname);
switch (docname) {
case "Guide_to_chemistry":
processChemistry(root);
break;
case "Infections":
processVirology(root);
break;
case "Guide_to_food":
processFood(root);
break;
case "Guide_to_drinks":
processDrinks(root);
break;
default:
}
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function postProcessHTML(root: HTMLElement, docname: string): void {
// This should be noop unless we're testing changes before committing them to processHTML
document.querySelectorAll("img[width]").forEach((img) => {
const width = img.getAttribute("width");
// Don't care if they are not absolutely sized
if (width.includes("%")) {
return;
}
const widthI = parseInt(width, 10);
if (widthI > MAX_WIDTH) {
img.setAttribute("width", "100%");
img.removeAttribute("height"); // Remove any height so we don't have to deal with the crazy math
}
});
switch (docname) {
default:
}
}
export function bindFunctions(root: HTMLElement, docname: string): void {
switch (docname) {
case "Guide_to_chemistry":
genericScript(root, docname);
chemistryScript(root);
break;
case "Infections":
genericScript(root, docname);
virologyScript(root);
break;
case "$Welcome":
welcomeScript(root);
break;
case "Guide_to_food":
genericScript(root, docname);
foodScript(root);
break;
case "Guide_to_drinks":
genericScript(root, docname);
drinkScript(root);
break;
default:
genericScript(root, docname);
break;
}
}
export default {
PAGE_VERSIONS,
postProcessHTML,
processHTML,
bindFunctions,
};