PageSourceSearch

https://www.rhewa.com/typo3temp/assets/t3sbootstrap_c84294887f.js?1769090988

js rhewa.com collected 2026-10-09 17:29:44 UTC 4,907 bytes, 180 lines download raw bytes

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.