1jQuery('.header-menu-link').each(function() { 2 3 const hovered_element = jQuery(this); 4 const menu_selector = '#menu-' + hovered_element.attr('class').split('-').pop(); 5 6 jQuery(hovered_element).on('mouseover', () => { 7 const menu_class = get_element_type(jQuery(this).attr('class')); 8 9 jQuery('.header-menu-link').removeClass('open'); 10 jQuery('.header-menu-link-' + menu_class).addClass('open'); 11 12 jQuery('#menu-catalog').removeClass('open'); 13 jQuery('#menu-ressources').removeClass('open'); 14 jQuery('#menu-' + menu_class).addClass('open'); 15 jQuery('header .shutter').addClass('show'); 16 17 }); 18 19 jQuery(hovered_element).add(menu_selector).on('mouseleave', function() { 20 if(!hovered_element.is(':hover') && !jQuery(menu_selector).is(':hover')) { 21 22 hovered_element.removeClass('open'); 23 const menu_class = get_element_type(hovered_element.attr('class')); 24 jQuery('#menu-' + menu_class).removeClass('open'); 25 26 if(!jQuery('#menu-catalog').is(':hover') && !jQuery('#menu-ressources').is(':hover')) { 27 jQuery('header .shutter').removeClass('show'); 28 } 29 } 30 }); 31 32 jQuery(menu_selector).on('mouseleave', function() { 33 if(!jQuery('.header-menu-link').is(':hover')) { 34 35 hovered_element.removeClass('open'); 36 const menu_class = get_element_type(hovered_element.attr('class')); 37 jQuery('#menu-' + menu_class).removeClass('open'); 38 39 if(!jQuery('.header-menu-links').is(':hover')) 40 jQuery('header .shutter').removeClass('show'); 41 } 42 }); 43}); 44 45 46 47// Menu ressources 48jQuery('.universe-selector').each(function() { 49 50 jQuery('.all-ressources-3d-printers').addClass('show'); 51 jQuery('.universe-selector-3d-printers').addClass('highlight'); 52 53 jQuery(this).on('mouseover', () => { 54 55 jQuery('.universe-selector').removeClass('highlight'); 56 jQuery(this).addClass('highlight'); 57 58 const universe_class = jQuery(this).attr('class').split(' ')[1]; 59 const universe_name = universe_class.replace('universe-selector-', ''); 60 61 jQuery('.all-ressources').removeClass('show'); 62 jQuery('.all-ressources-' + universe_name).addClass('show'); 63 jQuery('header .shutter').addClass('show'); 64 }); 65}); 66 67 68 69 70// Menu mobile 71jQuery('.open-mobile-menu').on('click', function() { 72 jQuery('#mobile-menu').toggleClass('show'); 73 jQuery('body').toggleClass('menu-displayed'); 74}); 75 76jQuery('#mobile-menu .menu-title-level3, #mobile-menu .menu-title-level2, #mobile-menu .menu-title-level1').each(function() { 77 jQuery(this).on('click', function() { 78 79 const classe = get_container_name(jQuery(this).parent().attr('class')); 80 const sub_menu = '.' + classe + '_sub-level'; 81 const parent_menu = jQuery(sub_menu).parent(); 82 83 jQuery(sub_menu).toggleClass('show'); 84 parent_menu.toggleClass('show'); 85 86 if(!parent_menu.hasClass('show')) { 87 parent_menu.find('.show').removeClass('show'); 88 } 89 }); 90}); 91 92 93// Fonctions utilitaires 94function get_container_name(classes) { 95 return classes.split(' ').filter( 96 (classe) => classe.includes('mobile') && !classe.includes('_sub-level') 97 )[0] || null; 98} 99 100function get_element_type(str) { 101 if(str.includes('ressources')) return 'ressources'; 102 if(str.includes('catalog') ) return 'catalog'; 103 104 return null; 105}
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.