|
771 | 771 |
|
772 | 772 | // Function to process Mermaid diagrams |
773 | 773 | function processMermaidDiagrams() { |
| 774 | + console.log('Processing Mermaid diagrams...'); |
| 775 | + |
774 | 776 | // Find all code blocks with mermaid language |
775 | | - const mermaidBlocks = document.querySelectorAll('code.language-mermaid, pre code.language-mermaid'); |
| 777 | + const mermaidBlocks = document.querySelectorAll('code.language-mermaid, pre code.language-mermaid, code[class*="mermaid"]'); |
| 778 | + |
| 779 | + console.log('Found', mermaidBlocks.length, 'Mermaid code blocks'); |
776 | 780 |
|
777 | 781 | if (mermaidBlocks.length > 0) { |
778 | | - console.log('Found', mermaidBlocks.length, 'Mermaid diagram blocks'); |
779 | | - |
780 | 782 | // Process each block |
781 | 783 | mermaidBlocks.forEach((block, index) => { |
782 | 784 | // Get the parent pre element if it exists |
783 | 785 | const preElement = block.parentElement; |
784 | 786 | if (preElement && preElement.tagName === 'PRE') { |
785 | 787 | // Get the mermaid code |
786 | 788 | const mermaidCode = block.textContent || block.innerText; |
| 789 | + console.log('Processing Mermaid block', index + 1, ':', mermaidCode.substring(0, 50) + '...'); |
787 | 790 |
|
788 | 791 | // Create a div for Mermaid to render into |
789 | 792 | const mermaidDiv = document.createElement('div'); |
|
796 | 799 | }); |
797 | 800 |
|
798 | 801 | // Run Mermaid to render all diagrams |
| 802 | + console.log('Running Mermaid render...'); |
799 | 803 | mermaid.run().then(() => { |
| 804 | + console.log('Mermaid rendering complete'); |
800 | 805 | // After rendering, wrap diagrams with fullscreen buttons |
801 | 806 | createFullscreenOverlay(); |
802 | 807 | wrapDiagramsWithButtons(); |
| 808 | + }).catch((err) => { |
| 809 | + console.error('Mermaid rendering error:', err); |
803 | 810 | }); |
804 | 811 | } else { |
805 | 812 | // Fallback: look for pre > code blocks and check if they contain mermaid syntax |
| 813 | + console.log('No mermaid language blocks found, checking all code blocks...'); |
806 | 814 | const allCodeBlocks = document.querySelectorAll('pre code'); |
| 815 | + let foundMermaid = false; |
| 816 | + |
807 | 817 | allCodeBlocks.forEach((codeBlock) => { |
808 | 818 | const code = codeBlock.textContent || codeBlock.innerText; |
809 | 819 | // Check if it looks like mermaid code (starts with graph, sequenceDiagram, etc.) |
810 | 820 | if (code.trim().match(/^(graph|sequenceDiagram|flowchart|classDiagram|stateDiagram|erDiagram|gantt|pie|gitgraph|journey)/)) { |
| 821 | + foundMermaid = true; |
811 | 822 | const preElement = codeBlock.parentElement; |
812 | 823 | if (preElement && preElement.tagName === 'PRE') { |
813 | 824 | const mermaidDiv = document.createElement('div'); |
|
819 | 830 | }); |
820 | 831 |
|
821 | 832 | // Run Mermaid after processing |
822 | | - if (document.querySelectorAll('.mermaid').length > 0) { |
| 833 | + if (foundMermaid && document.querySelectorAll('.mermaid').length > 0) { |
| 834 | + console.log('Running Mermaid render (fallback)...'); |
823 | 835 | mermaid.run().then(() => { |
| 836 | + console.log('Mermaid rendering complete (fallback)'); |
824 | 837 | // After rendering, wrap diagrams with fullscreen buttons |
825 | 838 | createFullscreenOverlay(); |
826 | 839 | wrapDiagramsWithButtons(); |
| 840 | + }).catch((err) => { |
| 841 | + console.error('Mermaid rendering error (fallback):', err); |
827 | 842 | }); |
| 843 | + } else { |
| 844 | + console.log('No Mermaid diagrams found to render'); |
828 | 845 | } |
829 | 846 | } |
830 | 847 | } |
831 | 848 |
|
| 849 | + // Wait for everything to be ready |
| 850 | + function initMermaid() { |
| 851 | + // Wait a bit for Jekyll/Kramdown to finish processing |
| 852 | + setTimeout(() => { |
| 853 | + processMermaidDiagrams(); |
| 854 | + }, 100); |
| 855 | + } |
| 856 | + |
832 | 857 | // Process diagrams when DOM is ready |
833 | 858 | if (document.readyState === 'loading') { |
834 | | - document.addEventListener('DOMContentLoaded', processMermaidDiagrams); |
| 859 | + document.addEventListener('DOMContentLoaded', initMermaid); |
835 | 860 | } else { |
836 | | - // DOM already loaded, process immediately |
837 | | - processMermaidDiagrams(); |
| 861 | + // DOM already loaded, process after a short delay |
| 862 | + initMermaid(); |
838 | 863 | } |
839 | 864 | </script> |
840 | 865 | </body> |
|
0 commit comments