Skip to content

Commit 1feeb78

Browse files
committed
fix(ui): explicitly disable expressive-code for mermaid diagrams
1 parent 3239d3d commit 1feeb78

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

astro.config.mjs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default defineConfig({
99
site: 'https://docs.sharonwang.me',
1010
adapter: vercel({ imageService: true, webAnalytics: { enabled: true } }),
1111
markdown: {
12-
remarkPlugins: [remarkMath],
12+
remarkPlugins: [remarkMath, remarkMermaidToDiv],
1313
rehypePlugins: [rehypeKatex],
1414
},
1515
integrations: [
@@ -161,7 +161,7 @@ export default defineConfig({
161161
async function renderMermaidDiagrams() {
162162
setupMermaidModal();
163163
164-
const codeBlocks = document.querySelectorAll('code.language-mermaid, pre.language-mermaid, pre[data-language="mermaid"]');
164+
const codeBlocks = document.querySelectorAll('.mermaid-raw, code.language-mermaid, pre.language-mermaid, pre[data-language="mermaid"]');
165165
for (let i = 0; i < codeBlocks.length; i++) {
166166
const codeBlock = codeBlocks[i];
167167
if (codeBlock.dataset.mermaidRendered) continue;
@@ -170,15 +170,19 @@ export default defineConfig({
170170
const preOrFigure = codeBlock.closest('.expressive-code') || codeBlock.closest('pre') || codeBlock;
171171
172172
let textContent = '';
173-
const copyBtn = preOrFigure.querySelector('button[data-code]');
174-
if (copyBtn && copyBtn.dataset.code) {
175-
textContent = copyBtn.dataset.code.replace(new RegExp(String.fromCharCode(127), 'g'), String.fromCharCode(10));
173+
if (codeBlock.classList.contains('mermaid-raw')) {
174+
textContent = decodeURIComponent(codeBlock.dataset.raw || '');
176175
} else {
177-
const lines = codeBlock.querySelectorAll('.ec-line .code');
178-
if (lines.length > 0) {
179-
textContent = Array.from(lines).map(line => line.textContent).join(String.fromCharCode(10));
176+
const copyBtn = preOrFigure.querySelector('button[data-code]');
177+
if (copyBtn && copyBtn.dataset.code) {
178+
textContent = copyBtn.dataset.code.replace(new RegExp(String.fromCharCode(127), 'g'), String.fromCharCode(10));
180179
} else {
181-
textContent = codeBlock.textContent || '';
180+
const lines = codeBlock.querySelectorAll('.ec-line .code');
181+
if (lines.length > 0) {
182+
textContent = Array.from(lines).map(line => line.textContent).join(String.fromCharCode(10));
183+
} else {
184+
textContent = codeBlock.textContent || '';
185+
}
182186
}
183187
}
184188

0 commit comments

Comments
 (0)