https://calmatters.org/wp-content/plugins/newspack-calmatters/assets/scripts/cm-about.js?ver=4.21.15
1document.addEventListener("DOMContentLoaded", function() { 2 const cmAboutMenu = document.getElementById('about-menu'); 3 const cmCloseButton = document.getElementById('about-close-button'); 4 const cmAboutMobileButton = document.querySelector('.about-menu-lighthouse-mobile-button'); 5 const cmMenuPopup = document.getElementById('about-internal-nav'); 6 7 function cmToggleAboutMenu() { 8 cmAboutMenu.classList.toggle('about-menu-open'); 9 cmAboutMenu.classList.toggle('about-menu-closed'); 10 }; 11 12 // toggle menu on click of mobile menu or close button 13 cmAboutMobileButton.addEventListener('click', cmToggleAboutMenu); 14 cmCloseButton.addEventListener('click', cmToggleAboutMenu); 15 16 // close menu when clicking outside of menu 17 document.addEventListener('click', event => { 18 if (cmAboutMenu.classList.contains('about-menu-open') && (!cmMenuPopup.contains(event.target))) { 19 cmToggleAboutMenu(); 20 } 21 }) 22 23}); 24function cmAboutToggleReadMore() { 25 const container = this.parentElement; 26 const readMoreText = container.querySelector(".cm-expanding-element"); 27 const readMoreButton = container.querySelector(".cm-show-more-less-button"); 28 const readMoreButtonText = readMoreButton.dataset.more; 29 const readLessButtonText = readMoreButton.dataset.less; 30 readMoreText.classList.toggle("cm-show-more"); 31 readMoreText.classList.toggle("cm-show-less"); 32 this.textContent = this.textContent === readLessButtonText ? readMoreButtonText : readLessButtonText; 33} 34 35// Add an event listener to each button and trigger cmAboutToggleReadMore function when clicked 36var buttons = document.querySelectorAll(".cm-show-more-less-button"); 37for (var i = 0; i < buttons.length; i++) { 38 buttons[i].addEventListener("click", cmAboutToggleReadMore); 39} 40 41 42 43// Footer Menu Fix 44const ab_menu = document.querySelector('#about-menu'); 45const ab_footer = document.querySelector('#colophon'); 46const ab_observer_options = { 47 threshold: 0.30, 48} 49 50function floatMenu(entries) { 51 entries.map((entry) => { 52 if (entry.isIntersecting) { 53 ab_menu.classList.add('about-menu-stick') 54 } else { 55 ab_menu.classList.remove('about-menu-stick') 56 } 57 }); 58} 59 60aboutMenuObserver = new IntersectionObserver(floatMenu, ab_observer_options); 61 62aboutMenuObserver.observe(ab_footer);
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.