1/*! 2 * bforge sitepackage v1.0.0 (https://brainforge.at) 3 * Copyright 2023-2024 Philip Grussmann 4 * Licensed under the GPL-2.0-or-later license 5 */ 6import{Logger}from"Debug";import{configVarsPromise,convertKeys}from"promiseHelpers";globalThis.dataLayer=globalThis.dataLayer||[],globalThis.gtag=globalThis.gtag||function(){globalThis.dataLayer.push(arguments)},globalThis.ceFormEvents=globalThis.ceFormEvents||[],globalThis.consentUpdates=globalThis.consentUpdates||[],globalThis.gtmSynthEvents=globalThis.gtmSynthEvents||[];class TrackingHelper{#ceUserID1;#ceUserID2;#triggeredEvents={};#mymonPromise=null;#mymonFormPromise=null;#logger=new Logger("tracking");#consentAnalytics="true"===localStorage.consentAnalytics;#consentAds="true"===localStorage.consentAds;#isSearchPage=!1;#searchTerm="";constructor(e){this.#setupConsent(),this.#setupSearch(e?.pid?.search===document.body.dataset.pid),this.#logger.log("Config",e),this.#setupCE(e?.api?.checkeffect?.userID1,e?.api?.checkeffect?.userID2),this.#hookIntoPush("gtmSynthEvents",this.#handleGtmEvent),this.#setupGtm(convertKeys(e?.api?.google?.tagManager??[])),this.#setupGa4(convertKeys(e?.api?.google?.analytics??[]))}async#setupCE(e,t){this.#ceUserID1=this.#logger.stage?"test_stage":"string"==typeof e&&""===e?void 0:e;e="string"==typeof t&&""===t?void 0:t;this.#ceUserID2=this.#logger.stage&&void 0!==e?"test_stage":e,this.#logger.log("Setting up checkeffect helper",{userid1:this.#ceUserID1,userid2:this.#ceUserID2}),globalThis.ceARG={dom:"//checkeffect.at",no_run:1,rmEvListener:1},await this.#pageView(),globalThis.cefARG={dom:"//checkeffect.at",no_run:1},this.#hookIntoPush("ceFormEvents",this.#handleFormEvent)}#setupSearch(e){this.#isSearchPage=e,this.#isSearchPage&&((e=document.getElementById("tx-indexedsearch-searchbox-sword"))instanceof HTMLInputElement&&"string"==typeof e.value&&""!==e.value&&(this.#searchTerm=e.value),""!==this.#searchTerm)&&globalThis.gtag("event","search",{search_term:this.#searchTerm})}#setupConsent(){globalThis.gtag("consent","default",{analytics_storage:this.#consentAnalytics?"granted":"denied",ad_storage:this.#consentAds?"granted":"denied",ad_user_data:this.#consentAds?"granted":"denied",ad_personalization:this.#consentAds?"granted":"denied"}),this.#hookIntoPush("consentUpdates",this.#handleConsentUpdate)}#setupGtm(i){if(0!==i.length){let t=()=>{globalThis.dataLayer.push({"gtm.start":(new Date).getTime(),event:"gtm.js"});for(var e of i){var t;this.#logger.log("GTM-URL",`https://www.googletagmanager.com/gtm.js?id=${e}&l=dataLayer`),!0!==this.#logger.stage&&((t=document.createElement("script")).async=!0,t.src=`https://www.googletagmanager.com/gtm.js?id=${e}&l=dataLayer`,document.head.prepend(t))}},s=["scroll","click","keydown","touchstart","pointerdown"],r=!1,o=()=>{if(!r){r=!0;for(var e of s)globalThis.removeEventListener(e,o);t()}};for(var e of s)globalThis.addEventListener(e,o,{once:!0,passive:!0});var a=()=>globalThis.setTimeout(o,3e3);"complete"===document.readyState?a():globalThis.addEventListener("load",a,{once:!0})}}#setupGa4(e){if(0!==e.length){globalThis.gtag("js",new Date);for(var t of e){var s;globalThis.gtag("config",t,{debug_mode:this.#logger.debugging}),this.#logger.log("Analytics-URL","https://www.googletagmanager.com/gtag/js?id="+t),!0!==this.#logger.stage&&((s=document.createElement("script")).async=!0,s.src="https://www.googletagmanager.com/gtag/js?id="+t,document.head.prepend(s))}}}#hookIntoPush(t,e){globalThis[t]=globalThis[t]||[];var s,r=[...globalThis[t]];globalThis[t]=[];let o=e.bind(this);globalThis[t].push=e=>(o(e),Array.prototype.push.apply(globalThis[t],arguments));for(s of r)globalThis[t].push(s)}#handleConsentUpdate(e){if(this.#logger.log("Consent-Update",e),"object"==typeof e&&null!==e){var t,s,r={};for([t,s]of Object.entries(e))switch(t){case"analytics":"true"===localStorage.consentAnalytics!==(localStorage.consentAnalytics=s)&&(r.analytics_storage=s?"granted":"denied");break;case"ads":"true"===localStorage.consentAds!==(localStorage.consentAds=s)&&(r.ad_storage=s?"granted":"denied",r.ad_user_data=s?"granted":"denied",r.ad_personalization=s?"granted":"denied")}1<=Object.values(r).length&&globalThis.gtag("consent","update",r)}}#handleGtmEvent(r){if("object"==typeof r&&null!==r&&"event"in r&&"string"==typeof r.event){let e=r["event"];if("trigger"in r&&"number"==typeof r.trigger){var t=r["trigger"];let s=()=>{this.#triggeredEvents.gtm=this.#triggeredEvents.gtm||[],this.#triggeredEvents.gtm.includes(e)||(window.dataLayer.push({event:e}),this.#triggeredEvents.gtm.push(e))};if(0===t)s();else if(1===t&&"selector"in r&&"string"==typeof r.selector&&""!==r.selector){t=r["selector"],r=document.querySelectorAll(t);if(0!==r.length){let t=new AbortController;
6r.forEach(e=>{e.addEventListener("click",()=>{t.abort(),s()},{signal:t.signal})})}}}}}async#handleFormEvent(a){a=this.#assertFormEvent(a);if(null!==a){let{action:s,formId1:r,formId2:o,trigger:e,selector:i}=a;if(this.#logger.log("Logging form event",{action:s,formId1:r,formId2:o,trigger:e,selector:i}),this.#logger.stage&&this.#logger.blocked)return!1;if("click"===e&&"string"==typeof i&&""!==i){a=document.querySelectorAll(i);if(0===a.length)return;let t=new AbortController;void a.forEach(e=>{e.addEventListener("click",()=>{t.abort(),this.#sendFormEvents({action:s,formId1:r,formId2:o})},{signal:t.signal})})}else this.#sendFormEvents({action:s,formId1:r,formId2:o})}}#assertFormEvent(e){let t,s,r,o,i;if("object"!=typeof e||null===e)return null;for(var[a,n]of Object.entries(e))switch(a){case"a":switch(n){case 1:case"send":t="send";break;case 0:case"view":t="view"}break;case"t1":"number"==typeof n&&0!==n&&(s=n);break;case"t2":"number"==typeof n&&0!==n&&(r=n);break;case"trigger":if("number"==typeof n)switch(n){case 0:o="load";break;case 1:o="click"}break;case"selector":"string"==typeof n&&""!==n&&(i=n)}return void 0===t||void 0===s&&void 0===r?null:{action:t,formId1:s,formId2:r,trigger:o,selector:i}}async#sendFormEvents({action:e,formId1:t,formId2:s}){if(this.#logger.log("Logging form event",{action:e,formId1:t,formId2:s}),this.#logger.stage&&this.#logger.blocked)return!1;"number"==typeof t&&"string"==typeof this.#ceUserID1&&await this.#sendFormEvent(e,t,this.#ceUserID1),"number"==typeof s&&"string"==typeof this.#ceUserID2&&await this.#sendFormEvent(e,s,this.#ceUserID2)}async#sendFormEvent(e,t,s){if(this.#triggeredEvents[s]=this.#triggeredEvents[s]||[],!this.#triggeredEvents[s].includes(t)){this.#triggeredEvents[s].push(t),await this.#mymonForm,globalThis.cefARG.a=e,globalThis.cefARG.u=s,globalThis.cefARG.t=t;try{globalThis.ce_runFlog({force:1})}catch(e){this.#logger.error("Could not run ce_runFlog",e)}}}async#pageView(){if(this.#logger.log("Logging page view",document.location.href),this.#logger.stage&&this.#logger.blocked)return!1;var e=new URL(document.location.href);if(this.#isSearchPage&&""!==this.#searchTerm&&e.searchParams.set("q",this.#searchTerm),globalThis.ceARG.fpage=e.href,"string"!=typeof this.#ceUserID1&&"string"!=typeof this.#ceUserID2||await this.#mymon,"string"==typeof this.#ceUserID1){globalThis.ceARG.u=this.#ceUserID1;try{globalThis.ce_run_it({force:1})}catch(e){this.#logger.error("Failed running PageView",e)}}if("string"==typeof this.#ceUserID2){globalThis.ceARG.u=this.#ceUserID2;try{globalThis.ce_run_it({force:1})}catch(e){this.#logger.error("Failed running PageView",e)}}"string"!=typeof this.#ceUserID1&&"string"!=typeof this.#ceUserID2||this.#trackClicks()}#trackClicks(){if(this.#logger.stage&&this.#logger.blocked)return!1;globalThis.cc={},document.querySelectorAll('a[href^="tel:"],a[href^="mailto:"]').forEach(s=>{s instanceof HTMLAnchorElement&&s.addEventListener("click",e=>{var t=s.href.startsWith("tel:")?"hptlcl":"hpemcl";"string"==typeof this.#ceUserID1&&globalThis.celgClick(e,this.#ceUserID1,1,t,1),"string"==typeof this.#ceUserID2&&globalThis.celgClick(e,this.#ceUserID2,1,t,1)},{once:!0})})}get#mymon(){return(!this.#logger.stage||!this.#logger.blocked)&&(null===this.#mymonPromise&&(this.#mymonPromise=new Promise(e=>{var t=document.createElement("script");t.src="//checkeffect.at/mymon2.js",t.onload=()=>{e()},document.head.append(t)})),this.#mymonPromise)}get#mymonForm(){return(!this.#logger.stage||!this.#logger.blocked)&&(null===this.#mymonFormPromise&&(this.#mymonFormPromise=new Promise(e=>{var t=document.createElement("script");t.src="//checkeffect.at/mymon_form_log2.js",t.onload=()=>{e()},document.head.append(t)})),this.#mymonFormPromise)}}configVarsPromise.then(e=>new TrackingHelper(e));
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.