Skip to content

Commit 0c0b5e9

Browse files
committed
fix: highlight
1 parent d992232 commit 0c0b5e9

1 file changed

Lines changed: 35 additions & 6 deletions

File tree

templates/scripts.ts

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,33 @@ export const themeInitScript = `(function() {
1212

1313
/** Main page scripts */
1414
export const mainScript = `
15+
const HLJS_CDN = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build';
1516
const HLJS_THEMES = {
1617
dark: 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github-dark.min.css',
1718
light: 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css'
1819
};
1920
21+
function loadScript(src) {
22+
return new Promise((resolve, reject) => {
23+
const script = document.createElement('script');
24+
script.src = src;
25+
script.async = true;
26+
script.onload = resolve;
27+
script.onerror = reject;
28+
document.head.appendChild(script);
29+
});
30+
}
31+
32+
async function ensureHljs() {
33+
if (window.hljs) return;
34+
await loadScript(\`\${HLJS_CDN}/highlight.min.js\`);
35+
await loadScript(\`\${HLJS_CDN}/languages/typescript.min.js\`);
36+
}
37+
2038
function updateHljsTheme(theme) {
21-
document.getElementById('hljs-theme').href = HLJS_THEMES[theme];
39+
const themeLink = document.getElementById('hljs-theme');
40+
if (!themeLink) return;
41+
themeLink.href = HLJS_THEMES[theme];
2242
}
2343
2444
function toggleTheme() {
@@ -57,9 +77,11 @@ function initCarousel() {
5777
tabs[index].classList.add('active');
5878
slides.forEach(s => s.classList.remove('active'));
5979
slides[index].classList.add('active');
60-
slides[index].querySelectorAll('pre code:not([data-highlighted])').forEach(block => {
61-
hljs.highlightElement(block);
62-
});
80+
if (window.hljs) {
81+
slides[index].querySelectorAll('pre code:not([data-highlighted])').forEach(block => {
82+
hljs.highlightElement(block);
83+
});
84+
}
6385
}
6486
6587
function getCurrentIndex() {
@@ -152,12 +174,19 @@ function initSignatureScrollFade() {
152174
});
153175
}
154176
155-
document.addEventListener('DOMContentLoaded', () => {
156-
hljs.highlightAll();
177+
document.addEventListener('DOMContentLoaded', async () => {
157178
updateHljsTheme(document.documentElement.getAttribute('data-theme') || 'dark');
158179
initCarousel();
159180
initScrollableNavFade();
160181
initCodeCopyButtons();
161182
initSignatureScrollFade();
183+
try {
184+
await ensureHljs();
185+
if (window.hljs) {
186+
hljs.highlightAll();
187+
}
188+
} catch (err) {
189+
console.warn('Failed to load highlight.js', err);
190+
}
162191
});
163192
`;

0 commit comments

Comments
 (0)