1/* eslint-disable operator-linebreak */ 2const convertExperiments = (() => { 3 const publicMethods = {}; 4 const elements = { 5 homepageLogos: document.getElementById('homepageLogos'), 6 subheadingHomepage: document.getElementById('subheadingHomepage'), 7 subheadingHomepageHeading: document.getElementById('subheadingHomepageHeading'), 8 g2Variations: document.getElementById('g2Variations'), 9 featuresHomepageVariations: document.getElementById('featuresHomepageVariations'), 10 featuresHomepageAccordion: document.getElementById('featuresHomepageAccordion'), 11 gdprCommitment: document.getElementById('gdprCommitment'), 12 }; 13 14 // 15 // PRIVATE METHODS 16 // 17 const flipHomepageLogos = () => { 18 if (!elements.homepageLogos) { 19 return; 20 } 21 22 const allLogos = Array.from(elements.homepageLogos.children); 23 24 if (allLogos.length === 0) { 25 console.warn('No logos found'); 26 return; 27 } 28 29 // Define the desired order (indices from original array) 30 // You can easily modify this array to change the order 31 const desiredOrder = [0, 1, 3, 2]; // Example: 4th, 1st, 9th, 2nd, 3rd logos 32 33 // Filter out indices that don't exist and take only what we need 34 const validLogos = desiredOrder 35 .filter((index) => index < allLogos.length) // Only use valid indices 36 .map((index) => allLogos[index]) // Get the actual elements 37 .slice(0, 5); // Limit to 5 logos 38 39 // Clear the container 40 elements.homepageLogos.innerHTML = ''; 41 42 // Add the logos in the new order 43 validLogos.forEach((logo) => { 44 elements.homepageLogos.appendChild(logo); 45 if (logo.classList.contains('hidden')) { 46 logo.classList.remove('hidden'); 47 } 48 }); 49 50 // Stop the hero marquee: this variant shows the logos as a static grid 51 const marquee = elements.homepageLogos.closest('.features-marquee'); 52 if (marquee) { 53 marquee.classList.remove('features-marquee'); 54 } 55 elements.homepageLogos.className = 56 'grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 justify-items-center items-center gap-6'; 57 }; 58 59 const belowTheFoldMainTitle = () => { 60 if (!elements.subheadingHomepage || !elements.subheadingHomepageHeading) { 61 return; 62 } 63 64 elements.subheadingHomepage.textContent = 65 'Weâve Optimized 40,000+ sites over 15 Years!'; 66 elements.subheadingHomepageHeading.textContent = 67 'A/B Testing, Full-Stack Experiments & Personalization for German Teams â Brought to You by an Industry Leader'; 68 }; 69 70 const g2Slider = () => { 71 if (elements.g2Variations) { 72 elements.g2Variations.classList.remove('hidden'); 73 } 74 }; 75 76 const featuresHomepageVariations = () => { 77 if (elements.featuresHomepageVariations) { 78 elements.featuresHomepageVariations.classList.remove('hidden'); 79 elements.featuresHomepageAccordion.classList.add('hidden'); 80 } 81 }; 82 83 const showTTDSGAndBDSGCommitment = () => {
84 if (!elements.gdprCommitment) { 85 return; 86 } 87 88 const paragraphs = [ 89 "We respect your privacy and comply with Germany's Telecommunications-Telemedia Data Protection Act (TTDSG) and the Federal Data Protection Act (BDSG) when processing web traffic data on our site.", 90 'We use Plausible Analytics, a privacy-focused tool hosted in the EU, which does not use cookies or collect personal data. All analytics are fully anonymized and serve only to improve our website content.', 91 'For personalization and performance tracking of our LinkedIn advertising campaigns, we use the LinkedIn Insight Tag. This technology is only activated with your explicit consent, in accordance with § 25 (1) TTDSG and Art. 6 (1)(a) GDPR. You can manage or withdraw your consent at any time via our cookie settings.', 92 'We do not collect or process any data from employees or job applicants through this website.', 93 'To learn more about how we handle your data and your rights under the BDSG and GDPR, please see our <a href="/privacy-notice/" target="_blank">Privacy Notice</a>.', 94 ]; 95 96 const wrapper = document.createElement('div'); 97 wrapper.setAttribute('id', 'ttdsgAndBDSGCommitment'); 98 wrapper.classList.add('grid', 'section-main'); 99 100 const grid = document.createElement('div'); 101 grid.classList.add('grid-center__8'); 102 wrapper.appendChild(grid); 103 104 const title = document.createElement('h2'); 105 title.setAttribute('class', 'center'); 106 title.textContent = 'Our TTDSG & BDSG Commitment'; 107 grid.appendChild(title); 108 109 paragraphs.forEach((paragraph) => { 110 const content = document.createElement('p'); 111 content.setAttribute('class', 'lead'); 112 content.innerHTML = paragraph; 113 grid.appendChild(content); 114 }); 115 116 // Insert the wrapper after the gdprCommitment element
117 elements.gdprCommitment.after(wrapper); 118 }; 119 120 // 121 // PUBLIC METHODS 122 // 123 publicMethods.homepageExperiments = () => { 124 flipHomepageLogos(); 125 belowTheFoldMainTitle(); 126 g2Slider(); 127 featuresHomepageVariations(); 128 showTTDSGAndBDSGCommitment(); 129 }; 130 131 return publicMethods; 132})(); 133 134if (typeof window !== 'undefined') { 135 window.convertExperiments = convertExperiments; 136}
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.