{
page;
function highlight_matching_courses(key="Packages and Tools", type="topics", shadow_style) {
let matching_courses = filtered_courses.filter(name => course_info[name][type].includes(key));
matching_courses.map(course => add_shadow(course, ...shadow_style));
}
function register_hover(key, type) {
let el = document.querySelector(`button[value="${key}"]`);
['mouseenter','focusin','touchstart'].forEach(
event_name => el.addEventListener(event_name,
event => highlight_matching_courses(key, type, [0,5])));
['mouseleave','focusout','touchend','touchcancel'].forEach(
event_name => el.addEventListener(event_name,
event => highlight_matching_courses(key, type, [5,0])));
}
[...topics].map(t => register_hover(t, "topics"));
[...languages].map(l => register_hover(l, "languages"));
}