1const analytics = ["analytics_storage"] 2const marketing = ["ad_storage", "ad_user_data", "ad_personalization", "personalization_storage"] 3const required = ["functionality_storage", "security_storage"] 4let k 5 6function initialSet() { 7 const majorButton = document.querySelector(".cookie-wrapper .major-button") 8 const minorButton = document.querySelector(".cookie-wrapper .minor-button") 9 10 majorButton.addEventListener("click", acceptAll) 11 minorButton.addEventListener("click", () => { 12 openOptions(majorButton, minorButton) 13 }, { once: true }); 14 15 toggleBanner() 16 createAccordions() 17 18 for (let button of document.querySelectorAll(".content-options .selector")) { 19 button.addEventListener("click", () => { 20 updateConsent(button.parentElement.parentElement, button.parentElement.parentElement.classList.contains("active")) 21 button.parentElement.parentElement.classList.toggle("active") 22 }) 23 } 24} 25 26function updateConsent(optionElement, state) { 27 28 const consentObject = JSON.parse(localStorage.getItem("consent")) 29 const consentOption = optionElement.getAttribute("data-consent") 30 let consentArray 31 32 switch (consentOption) { 33 case "required": 34 consentArray = required 35 return; 36 case "analytics": 37 consentArray = analytics 38 break; 39 case "marketing": 40 consentArray = marketing 41 break; 42 default: 43 console.error("consentOption Broke") 44 break; 45 } 46 47 for (let option of consentArray) { 48 49 if (state) 50 consentObject[option] = "denied" 51 else 52 consentObject[option] = "granted" 53 } 54 55 localStorage.setItem("consent", JSON.stringify(consentObject)) 56 57 setConsent("update", consentObject) 58 59} 60 61function changeAll(state) { 62 let consentObject = JSON.parse(localStorage.getItem("consent")) 63 64 for (let key in consentObject) { 65 if (key != "functionality_storage" && key != "security_storage") 66 consentObject[key] = state 67 } 68 69 localStorage.setItem("consent", JSON.stringify(consentObject)) 70 setConsent("update", consentObject) 71 toggleBanner() 72} 73 74function acceptAll() { 75 changeAll("granted") 76} 77 78function denyAll() { 79 changeAll("denied") 80} 81 82function toggleBanner() { 83 document.querySelector(".cookie-wrapper").classList.toggle("active") 84} 85 86function createAccordions() { 87 for (let item of document.querySelectorAll(".accordion")) { 88 item.querySelector(".heading").addEventListener("click", () => { 89 toggleAccordion(item); 90 }); 91 } 92} 93 94function toggleAccordion(parent) { 95 if (parent.classList.contains("active")) closeAccordion(parent); 96 else openAccordion(parent); 97} 98 99function openAccordion(parent) { 100 for (let item of document.querySelectorAll(".accordion")) { 101 closeAccordion(item); 102 } 103 let content = parent.querySelector(".content"); 104 content.style.height = content.scrollHeight + "px"; 105 parent.classList.add("active"); 106} 107 108function closeAccordion(parent) { 109 let content = parent.querySelector(".content"); 110 content.style.height = "0px"; 111 parent.classList.remove("active"); 112} 113 114function openOptions(majorButton, minorButton) { 115 majorButton.removeEventListener('click', acceptAll) 116 117 majorButton.innerText = document.getElementById("major-button-alt").innerText 118 majorButton.addEventListener("click", toggleBanner) 119 120 minorButton.innerText = document.getElementById("minor-button-alt").innerText 121 minorButton.addEventListener("click", denyAll) 122 123 document.querySelector(".cookie-wrapper .general-text").classList.add("active") 124 document.querySelector(".cookie-wrapper .content-options").classList.add("active") 125}
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.