mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-27 00:06:30 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
| // Custom JavaScript for Trilium Notes documentation
 | |
| 
 | |
| // Add smooth scrolling for anchor links
 | |
| document.addEventListener('DOMContentLoaded', function() {
 | |
|     // Smooth scroll for internal links
 | |
|     document.querySelectorAll('a[href^="#"]').forEach(anchor => {
 | |
|         anchor.addEventListener('click', function (e) {
 | |
|             e.preventDefault();
 | |
|             const target = document.querySelector(this.getAttribute('href'));
 | |
|             if (target) {
 | |
|                 target.scrollIntoView({
 | |
|                     behavior: 'smooth',
 | |
|                     block: 'start'
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     // Add copy button to code blocks if not already present
 | |
|     const codeBlocks = document.querySelectorAll('pre code');
 | |
|     codeBlocks.forEach(block => {
 | |
|         if (!block.parentElement.querySelector('.copy-button')) {
 | |
|             const button = document.createElement('button');
 | |
|             button.className = 'copy-button';
 | |
|             button.textContent = 'Copy';
 | |
|             button.addEventListener('click', () => {
 | |
|                 navigator.clipboard.writeText(block.textContent);
 | |
|                 button.textContent = 'Copied!';
 | |
|                 setTimeout(() => {
 | |
|                     button.textContent = 'Copy';
 | |
|                 }, 2000);
 | |
|             });
 | |
|             block.parentElement.appendChild(button);
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     // Add external link indicators
 | |
|     document.querySelectorAll('a[href^="http"]').forEach(link => {
 | |
|         if (!link.hostname.includes('trilium')) {
 | |
|             link.classList.add('external-link');
 | |
|             link.setAttribute('target', '_blank');
 | |
|             link.setAttribute('rel', 'noopener noreferrer');
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     // Platform detection for download buttons
 | |
|     const platform = detectPlatform();
 | |
|     const downloadButtons = document.querySelectorAll('.download-button');
 | |
|     downloadButtons.forEach(button => {
 | |
|         if (button.dataset.platform === platform) {
 | |
|             button.classList.add('recommended');
 | |
|             button.innerHTML += ' <span class="badge">Recommended</span>';
 | |
|         }
 | |
|     });
 | |
| });
 | |
| 
 | |
| // Detect user's platform
 | |
| function detectPlatform() {
 | |
|     const userAgent = navigator.userAgent.toLowerCase();
 | |
|     if (userAgent.includes('win')) return 'windows';
 | |
|     if (userAgent.includes('mac')) return 'macos';
 | |
|     if (userAgent.includes('linux')) return 'linux';
 | |
|     return 'unknown';
 | |
| }
 | |
| 
 | |
| // Add search shortcuts
 | |
| document.addEventListener('keydown', function(e) {
 | |
|     // Ctrl/Cmd + K to focus search
 | |
|     if ((e.ctrlKey || e.metaKey) && e.key === 'k') {
 | |
|         e.preventDefault();
 | |
|         const searchInput = document.querySelector('.md-search__input');
 | |
|         if (searchInput) {
 | |
|             searchInput.focus();
 | |
|         }
 | |
|     }
 | |
| });
 | |
| 
 | |
| // Version selector enhancement
 | |
| const versionSelector = document.querySelector('.md-version__current');
 | |
| if (versionSelector) {
 | |
|     // Add version comparison tooltip
 | |
|     versionSelector.addEventListener('mouseenter', function() {
 | |
|         const tooltip = document.createElement('div');
 | |
|         tooltip.className = 'version-tooltip';
 | |
|         tooltip.textContent = 'Click to view other versions';
 | |
|         this.appendChild(tooltip);
 | |
|     });
 | |
| }
 | |
| 
 | |
| // Analytics event tracking for documentation
 | |
| if (typeof gtag !== 'undefined') {
 | |
|     // Track external link clicks
 | |
|     document.querySelectorAll('a[href^="http"]').forEach(link => {
 | |
|         link.addEventListener('click', () => {
 | |
|             gtag('event', 'click', {
 | |
|                 'event_category': 'external_link',
 | |
|                 'event_label': link.href
 | |
|             });
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     // Track code copy events
 | |
|     document.querySelectorAll('.copy-button').forEach(button => {
 | |
|         button.addEventListener('click', () => {
 | |
|             gtag('event', 'copy_code', {
 | |
|                 'event_category': 'engagement',
 | |
|                 'event_label': window.location.pathname
 | |
|             });
 | |
|         });
 | |
|     });
 | |
| } |