1(function () { 2 'use strict'; 3 4 function pageLanguage() { 5 return (document.documentElement.lang || '').toLowerCase().indexOf('en') === 0 ? 'en' : 'fr'; 6 } 7 8 function linkGroup(anchor) { 9 var href = (anchor.getAttribute('href') || '').toLowerCase(); 10 var text = (anchor.textContent || '').trim().toLowerCase(); 11 if (text === 'product' || text === 'produit' || href.indexOf('ai-leasing-agent') !== -1 || href.indexOf('agent-location-ia') !== -1) return 'product'; 12 if (text === 'about' || text === 'à propos' || href.indexOf('/about') !== -1 || href.indexOf('/a-propos') !== -1) return 'about'; 13 if (text === 'resources' || text === 'ressources' || href.indexOf('/resources') !== -1 || href.indexOf('/ressources') !== -1) return 'resources'; 14 return 'other'; 15 } 16 17 function arrangeLinks(container) { 18 var anchors = Array.prototype.slice.call(container.querySelectorAll(':scope > a')); 19 var order = ['product', 'about', 'resources', 'other']; 20 anchors.sort(function (a, b) { 21 return order.indexOf(linkGroup(a)) - order.indexOf(linkGroup(b)); 22 }); 23 anchors.forEach(function (anchor) { container.appendChild(anchor); }); 24 return anchors; 25 } 26 27 function closeMenu(button, panel) { 28 button.setAttribute('aria-expanded', 'false'); 29 panel.hidden = true; 30 } 31 32 function initializeNavigation(nav, index) { 33 if (nav.querySelector('.mobile-menu-toggle')) return; 34 var desktopLinks = nav.querySelector('.nav-links'); 35 var navActions = nav.querySelector('.nav-actions'); 36 if (!desktopLinks || !navActions) return; 37 38 var links = arrangeLinks(desktopLinks); 39 var language = pageLanguage(); 40 var panelId = 'mobile-navigation-' + index; 41 42 var button = document.createElement('button'); 43 button.type = 'button'; 44 button.className = 'mobile-menu-toggle'; 45 button.setAttribute('aria-expanded', 'false'); 46 button.setAttribute('aria-controls', panelId); 47 button.setAttribute('aria-label', language === 'en' ? 'Open navigation' : 'Ouvrir la navigation'); 48 button.innerHTML = '<span class="mobile-menu-toggle-lines" aria-hidden="true"></span>'; 49 50 var panel = document.createElement('div'); 51 panel.className = 'mobile-nav'; 52 panel.id = panelId; 53 panel.hidden = true; 54 55 links.forEach(function (anchor) { 56 panel.appendChild(anchor.cloneNode(true)); 57 }); 58 59 var demo = document.createElement('a'); 60 demo.className = 'mobile-demo-link'; 61 demo.href = language === 'en' ? 'https://www.omnika.ai/en/demo' : 'https://www.omnika.ai/demo'; 62 demo.textContent = language === 'en' ? 'View the demo' : 'Voir la démo'; 63 panel.appendChild(demo); 64 65 navActions.appendChild(button); 66 nav.appendChild(panel); 67 68 button.addEventListener('click', function () { 69 var willOpen = panel.hidden; 70 panel.hidden = !willOpen; 71 button.setAttribute('aria-expanded', String(willOpen)); 72 button.setAttribute('aria-label', willOpen 73 ? (language === 'en' ? 'Close navigation' : 'Fermer la navigation') 74 : (language === 'en' ? 'Open navigation' : 'Ouvrir la navigation')); 75 }); 76 77 panel.addEventListener('click', function (event) { 78 if (event.target.closest('a')) closeMenu(button, panel); 79 }); 80 81 document.addEventListener('keydown', function (event) { 82 if (event.key === 'Escape' && !panel.hidden) { 83 closeMenu(button, panel); 84 button.focus(); 85 } 86 }); 87 88 document.addEventListener('click', function (event) { 89 if (!panel.hidden && !nav.contains(event.target)) closeMenu(button, panel); 90 }); 91 92 window.addEventListener('resize', function () { 93 if (window.innerWidth > 920 && !panel.hidden) closeMenu(button, panel); 94 }); 95 } 96 97 function init() { 98 document.querySelectorAll('.site-header .nav').forEach(initializeNavigation); 99 } 100 101 if (document.readyState === 'loading') { 102 document.addEventListener('DOMContentLoaded', init); 103 } else { 104 init(); 105 } 106})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.