1function clarkeFixTabs (tabsID) { 2 const $tabsObject = jQuery(tabsID); 3 const tabRoot = new Foundation.Tabs( $tabsObject ); 4 5 6 let params = new URLSearchParams(document.location.search); 7 8 const $tabGroup = document.querySelectorAll('[data-tabs] > li'); 9 10 let originalPageTitle = document.querySelector('meta[property="og:title"]').getAttribute('content'); 11 let siteName = document.querySelector('meta[property="og:site_name"]').getAttribute('content'); 12 //let urlBase = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname; 13 // Removed unnecessary forward slash 14 let urlBase = window.location.protocol + "//" + window.location.host + window.location.pathname; 15 16 const tabIsActive = ($tab) => { 17 return false; 18 } 19 20 // $activeTab = $tabGroup.find('.is-active'); 21 22 $tabGroup.forEach( 23 function(value, key) { 24 const linkElement = value.getElementsByTagName('a')[0]; 25 26 27 if (! params.has('tab')) { 28 if (value.classList.contains('is-active')) { 29 params.set('tab', value.dataset.tabName); 30 } 31 } 32 33 if (value.classList.contains('is-active') && params.get('tab') === value.dataset.tabName) { 34 console.log(value.dataset.tabName + ' is already active'); 35 if (originalPageTitle && siteName) { 36 params.set('tab', value.dataset.tabName); 37 let newUrl = urlBase + '?' + params.toString(); 38 let newTitle = originalPageTitle + ': ' + value.dataset.tabTitle + ' â ' + siteName; 39 let newState = { additionalInformation: 'Added tab `' + value.dataset.tabName + '` to URL' }; 40 document.title = newTitle; 41 history.replaceState(newState, newTitle, newUrl); 42 } 43 } else if ( params.get('tab') === value.dataset.tabName ) { 44 $tabsObject.foundation('_handleTabChange', jQuery(value)); 45 } 46 47 linkElement.addEventListener('click', function (e) { 48 console.log('Clicked ' + value.dataset.tabName); 49 50 if (value.dataset.tabName === params.get('tab')) { 51 console.log(value.dataset.tabName + ' is already active'); 52 } else { 53 console.log("Switching " + value.dataset.tabName + ' to active'); 54 55 params.set('tab', value.dataset.tabName); 56 let newUrl = urlBase + '?' + params.toString(); 57 let newTitle = originalPageTitle + ': ' + value.dataset.tabTitle + ' â ' + siteName; 58 let newState = { additionalInformation: 'Switched to tab `' + value.dataset.tabName + '`' }; 59 document.title = newTitle; 60 history.pushState(newState, newTitle, newUrl); 61 } 62 }, false); 63 64 } 65 ) 66}
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.