|
8 | 8 |
|
9 | 9 | <!-- Marked.js for markdown parsing - try multiple CDNs for reliability --> |
10 | 10 | <script src="https://unpkg.com/marked/marked.min.js"></script> |
11 | | - <!-- Mermaid.js for diagram rendering - local fallback --> |
12 | | - <script src="mermaid.min.js"></script> |
| 11 | + <!-- Mermaid.js for diagram rendering --> |
| 12 | + <script src=" https://cdn.jsdelivr.net/npm/[email protected]/dist/mermaid.min.js" ></script> |
13 | 13 | <script> |
14 | 14 | // Fallback if marked.js fails to load |
15 | 15 | if (typeof marked === 'undefined') { |
|
440 | 440 | const mermaidDiv = document.createElement('div'); |
441 | 441 | mermaidDiv.className = 'mermaid'; |
442 | 442 | mermaidDiv.setAttribute('id', `mermaid-${index}`); |
| 443 | + // Preserve line breaks and whitespace properly |
| 444 | + mermaidDiv.style.whiteSpace = 'pre'; |
443 | 445 | mermaidDiv.textContent = text; |
444 | 446 |
|
445 | 447 | // Replace the code block with the mermaid div |
|
450 | 452 | // Initialize mermaid if diagrams were found and library is available |
451 | 453 | const mermaidDivs = document.querySelectorAll('.mermaid'); |
452 | 454 | if (mermaidDivs.length > 0) { |
453 | | - // Simple approach - wait a bit for the library to load, then try once |
454 | | - setTimeout(() => { |
| 455 | + // Initialize mermaid when library is available |
| 456 | + const initMermaid = () => { |
455 | 457 | if (typeof mermaid !== 'undefined') { |
456 | 458 | try { |
457 | 459 | // Configure mermaid |
458 | 460 | mermaid.initialize({ |
459 | | - startOnLoad: false, |
| 461 | + startOnLoad: true, |
460 | 462 | theme: 'default', |
461 | | - securityLevel: 'loose', |
462 | | - fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", sans-serif' |
| 463 | + securityLevel: 'loose' |
463 | 464 | }); |
464 | | - |
465 | | - // Render all mermaid diagrams |
466 | | - mermaid.run(); |
467 | 465 | } catch (error) { |
468 | | - console.error('Error rendering mermaid diagrams:', error); |
| 466 | + console.error('Error initializing mermaid:', error); |
469 | 467 | } |
470 | 468 | } else { |
471 | 469 | console.warn('Mermaid library not available'); |
472 | | - // If mermaid is not available, show a message in the mermaid divs |
| 470 | + // Show fallback content |
473 | 471 | mermaidDivs.forEach(div => { |
474 | | - div.innerHTML = '<p><em>Mermaid diagram (library not loaded)</em></p><pre><code>' + div.textContent + '</code></pre>'; |
| 472 | + div.innerHTML = '<p><em>Mermaid diagram (requires mermaid.js)</em></p><pre style="background:#f4f4f4;padding:10px;border-radius:4px;"><code>' + div.textContent + '</code></pre>'; |
475 | 473 | }); |
476 | 474 | } |
477 | | - }, 1000); |
| 475 | + }; |
| 476 | + |
| 477 | + // Try to initialize after a delay to ensure library is loaded |
| 478 | + setTimeout(initMermaid, 500); |
478 | 479 | } |
479 | 480 | } |
480 | 481 |
|
|
0 commit comments