PageSourceSearch

https://www.londerzeel.be/global/js/burgerprofiel-v2.js

js londerzeel.be collected 2026-10-01 12:21:20 UTC 3,877 bytes, 116 lines download raw bytes

1
2document.addEventListener("DOMContentLoaded", function () {
3
4    const burgerprofielTemplate = document.getElementById("burgerprofiel-settings-template");
5    if (burgerprofielTemplate !== null) {
6        const jsonText = burgerprofielTemplate.innerHTML.trim();
7        try {
8            var Burgerprofiel = JSON.parse(jsonText);
9        } catch (error) {
10            console.error("Error parsing JSON:", error);
11        }
12    }
13
14    if (typeof (Burgerprofiel) !== "undefined") {
15		// const containerDiv = document.createElement('div');
16		var ghp = document.getElementById("global-header-placeholder");
17		var mountTarget = ghp.querySelector('.lcp-loader');
18        var success = window.globalHeaderClient.mount(mountTarget);
19
20		function appendStyle(shadowRoot) {
21			if (shadowRoot.querySelector('style[data-burgerprofiel-fix]')) {
22				return; // al toegevoegd
23			}
24			const style = document.createElement('style');
25			style.setAttribute('data-burgerprofiel-fix', '');
26			style.textContent = '.app { position: var(--vlw-burgerprofiel-display, fixed) !important; }';
27			const stylesheetLinks = shadowRoot.querySelectorAll('link[rel="stylesheet"]');
28			const lastLink = stylesheetLinks[stylesheetLinks.length - 1];
29			if (lastLink) {
30				lastLink.after(style);
31			} else {
32				shadowRoot.prepend(style);
33			}
34		}
35
36		// Zoekt in ghp (en al zijn nakomelingen, ook binnen shadow roots) naar een
37		// shadow root die '.app' bevat. We weten niet vooraf welk element de widget
38		// als shadow host gebruikt, dus we scannen breed i.p.v. één vaste referentie.
39		function findAndApply(root) {
40			const walker = [root, ...root.querySelectorAll('*')];
41			for (const el of walker) {
42				if (el.shadowRoot) {
43					if (el.shadowRoot.querySelector('.app')) {
44						appendStyle(el.shadowRoot);
45						return true;
46					}
47					if (findAndApply(el.shadowRoot)) {
48						return true;
49					}
50				}
51			}
52			return false;
53		}
54
55		const observedShadowRoots = new WeakSet();
56		const activeObservers = [];
57		let timeoutId;
58
59		function stopObserving() {
60			activeObservers.forEach(o => o.disconnect());
61			activeObservers.length = 0;
62			clearTimeout(timeoutId);
63		}
64
65		// Observeert `root` (document of een shadow root) op nieuwe elementen.
66		// Zodra '.app' gevonden is via findAndApply, stoppen alle observers.
67		// Nieuw ontdekte shadow roots worden ook (recursief) geobserveerd, want
68		// een MutationObserver ziet geen mutaties binnen shadow roots die hij
69		// zelf niet observeert.
70		function observeTree(root) {
71			if (findAndApply(ghp)) {
72				stopObserving();
73				return;
74			}
75			const observer = new MutationObserver(() => {
76				if (findAndApply(ghp)) {
77					stopObserving();
78					return;
79				}
80				for (const el of [root, ...root.querySelectorAll('*')]) {
81					if (el.shadowRoot && !observedShadowRoots.has(el.shadowRoot)) {
82						observedShadowRoots.add(el.shadowRoot);
83						observeTree(el.shadowRoot);
84					}
85				}
86			});
87			observer.observe(root, { childList: true, subtree: true });
88			activeObservers.push(observer);
89		}
90
91		timeoutId = setTimeout(() => {
92			stopObserving();
93			console.warn('[burgerprofiel-v2] geen shadow root met .app gevonden binnen ' + ghp.id, ghp);
94		}, 10000); 
95
96		observeTree(ghp);
97        // if (success) { }
98        const globalHeaderClient = window.globalHeaderClient;
99        var websiteHasAuthenticatedSession = Burgerprofiel.isAuthenticated;
100        globalHeaderClient.accessMenu.setProfile({
101            active: websiteHasAuthenticatedSession,
102            loginUrl: '/login',
103            logoutUrl: '/sso/logout?returnurl=%2F',
104            idpData: {
105                user: {
106                    firstName: Burgerprofiel.firstName ? Burgerprofiel.firstName : '',
107                    name: Burgerprofiel.lastName ? Burgerprofiel.lastName : ''
108                }
109            }
110
111        });
112
113    } else {
114        console.log('Burgerprofiel not loaded.');
115    }
116});

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.