mylloon.fr/static/js/libs/hljs.js
Mylloon 9dfcc1101d
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
Basic cours support (#44)
feat: Basic support for new `/cours` endpoint (not ready for release yet), see commit description for more

- Basic /cours support
- Fix LaTeX support (see #47 / cours+blog)
  - Better detection of when there is LaTeX in document
  - Don't shuffle markdown and LaTeX processing (thanks to comrak)
  - Macros on release
- Local image support (cours+blog)
- PDF support
- Support of markdown files integration in other markdown files
- Very basic exclusion support in toc (need a lot of improvement!!)
- Update multiple dependencies (actix-web, ramhorns, comrak, reqwest, hljs)
- Reformat some code
- ToC in /cours support (very basic, works via building it in rust and processing it in js)
- Remove very old assets (font + jspdf)
- Hide navbar when printing the website
- New tag in index page
- Fix OCaml support for HLJS + add "pseudocode" derived from Julia

Reviewed-on: #44
Co-authored-by: Mylloon <kennel.anri@tutanota.com>
Co-committed-by: Mylloon <kennel.anri@tutanota.com>
2024-04-01 18:11:46 +02:00

46 lines
1.2 KiB
JavaScript

window.addEventListener("load", () => {
/* Configuration */
hljs.configure({
noHighlightRe: /^$/i,
languageDetectRe: /\blanguage-hljs-([\w-]+)\b/i,
});
hljs.addPlugin(new CopyButtonPlugin());
/* Aliases of langs */
const aliases = {
bash: ["fish"],
julia: ["pseudocode"],
};
for (const lang in aliases) {
hljs.registerAliases(aliases[lang], { languageName: lang });
}
/* Highlight */
hljs.highlightAll();
hljs.initLineNumbersOnLoad();
/* Theme */
const dark = "dark";
const light = "light";
const attribute = "disabled";
const updateTheme = (theme) => {
{
const elementToEnable = document.getElementById(
`hljs-${theme.matches ? dark : light}-theme`
);
const elementToDisable = document.getElementById(
`hljs-${theme.matches ? light : dark}-theme`
);
if (elementToEnable.hasAttribute(attribute)) {
elementToEnable.removeAttribute(attribute);
}
elementToDisable.setAttribute(attribute, attribute);
}
};
const darkModePreference = window.matchMedia("(prefers-color-scheme: dark)");
updateTheme(darkModePreference);
darkModePreference.addEventListener("change", (theme) => updateTheme(theme));
});