1 2// Scroll anchor - Main.html 3function t3sbScrollToAnchor(sectionmenuAnchorOffset, fixedNavbar, navbarHeight, sectionhash=false) { 4 var hash = window.location.hash; 5 if (sectionhash) { 6 hash = sectionhash; 7 } 8 if (hash.length) { 9 var idArr = hash.split('#'); 10 var targetElement = document.getElementById(idArr[1]); 11 if ( targetElement === null ) { 12 idArr = hash.split('#c'); 13 targetElement = document.getElementById('tab-'+idArr[1]); 14 } 15 if ( targetElement != null ) { 16 var offsetSize = sectionmenuAnchorOffset; 17 if ( fixedNavbar ) { 18 offsetSize += navbarHeight; 19 } 20 var scrollTo = Math.round(t3sbOffsetTop(targetElement)-offsetSize); 21 window.scroll({ top: scrollTo, behavior: 'smooth' }); 22 } 23 } 24} 25 26function t3sbOffsetTop(el) { 27 var rect = el.getBoundingClientRect(), 28 scrollTop = window.pageYOffset || document.documentElement.scrollTop; 29 return rect.top + scrollTop; 30} 31 32 33 34// Loading spinner - Main.html 35function t3sbFadeOutEffect(fadeTarget) { 36 var fadeEffect = setInterval(function () { 37 if (!fadeTarget.style.opacity) { 38 fadeTarget.style.opacity = 1; 39 } 40 if (fadeTarget.style.opacity > 0) { 41 fadeTarget.style.opacity -= 0.1; 42 } else { 43 clearInterval(fadeEffect); 44 } 45 }, 60); 46 fadeTarget.classList.add('d-none'); 47} 48 49 50 51// Sticky footer - Page/Footer.html 52function t3sbStickyFooter(footerExtraHeight) { 53 const footer = document.getElementById('page-footer'); 54 var footerHeight = footer.offsetHeight -2; 55 if ( footerExtraHeight > 0 ) { 56 footerHeight += footerExtraHeight; 57 } 58 if ( footer.classList.contains('footer-sticky') ) { 59 document.body.style.paddingBottom = footerHeight+'px'; 60 } 61} 62 63 64 65// Extra Row - Navbar/Assets.html 66function t3sbExtraRow(vw, bp) { 67 let extraRow = document.querySelector('.navbar .extra-row'); 68 if (extraRow) { 69 if ( vw < bp ) { 70 extraRow.classList.add('flex-row','me-auto','mt-4','mb-0'); 71 extraRow.classList.remove('ms-auto'); 72 } else { 73 extraRow.classList.remove('flex-row','me-auto','mt-4','mb-0'); 74 extraRow.classList.add('ms-auto'); 75 } 76 } 77} 78 79 80 81// Searchbox in Navbar - Navbar/Assets.html 82function t3sbNavbarSearchbox(vw, bp) { 83 let form = document.querySelector('.navbar form'); 84 if ( vw < bp ) { 85 if (form.classList.contains('ms-auto')) { 86 form.classList.remove('ms-auto'); 87 form.classList.add('xl-ms-auto'); 88 } 89 form.classList.add('mt-3'); 90 } else { 91 if (form) { 92 if (form.classList.contains('xl-ms-auto')) { 93 form.classList.add('ms-auto'); 94 form.classList.remove('xl-ms-auto'); 95 } 96 form.classList.remove('mt-3'); 97 } 98 } 99} 100 101 102 103function ready(fn) { 104 if (document.readyState != 'loading'){ 105fn(); 106 } else { 107document.addEventListener('DOMContentLoaded', fn); 108 } 109} 110ready(() => { 111 // Default - Main.html 112 const navbar = document.getElementById('main-navbar'), 113 navbarHeight = navbar.clientHeight, 114 navbarBreakpointWidth = document.body.getAttribute('data-navbar-breakpointwidth'), 115 viewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", "")), 116 onePageLayout = navbar.classList.contains('sectionMenu'); 117 118 var fixedNavbar = false; 119 120 if ( navbar.classList.contains('fixed-top') ||Â navbar.classList.contains('sticky-top') ) { 121 fixedNavbar = true; 122 } 123 124 // Scroll anchor - Main.html 125 if (window.location.hash) { 126 t3sbScrollToAnchor(29, fixedNavbar, navbarHeight); 127 } 128 129 130 // Loading spinner - Main.html 131 window.onload = function() { 132 let spinner = document.getElementById('site-preloader'); 133 t3sbFadeOutEffect(spinner); 134 }; 135 136 137 // Searchbox - Navbar/Assets.html 138 t3sbNavbarSearchbox(viewportWidth, navbarBreakpointWidth); 139 window.addEventListener('resize', function(event) { 140 resizedViewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", "")); 141 t3sbNavbarSearchbox(resizedViewportWidth, navbarBreakpointWidth); 142 }, true); 143 144 145 // Extra row - Navbar/Assets.html 146 t3sbExtraRow(viewportWidth, navbarBreakpointWidth); 147 window.addEventListener('resize', function(event) { 148 resizedViewportWidth = parseFloat(getComputedStyle(document.querySelector('html'), null).width.replace("px", "")); 149 t3sbExtraRow(resizedViewportWidth, navbarBreakpointWidth); 150 }, true); 151 152 153 // Navbar mega-menu - Navbar/Assets.html 154 var megaDropdown = document.querySelectorAll('.mega-dropdown'), 155 navbarBreakpointToggler = ''; 156 if ( viewportWidth < navbarBreakpointWidth ) { 157 navbarBreakpointToggler = document.querySelectorAll('.remove-sm'); 158 navbarBreakpointToggler.forEach( nbt => { 159 nbt.remove(); 160 }); 161 } else { 162 navbarBreakpointToggler = document.querySelectorAll('.show-sm'); 163 navbarBreakpointToggler.forEach( nbt => { 164 nbt.remove(); 165 }); 166 } 167 168 169 // Baguette Box (lightbox) - Partials/Layouts/Assets.html 170 baguetteBox.run('.gallery, .image-gallery', { 171 animation: 'fadeIn', 172 noScrollbars: true 173 }); 174 175 176 // Sticky footer - Page/Footer.html 177 const footerExtraHeight = 100; 178 t3sbStickyFooter(footerExtraHeight); 179 180});
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.