1// Cookie deletion on consent withdrawal (HHM-3299) 2// https://support.didomi.io/fr/comment-supprimer-les-cookies-du-navigateur 3(function () { 4 var itemsToKeep = ["euconsent-v2", "didomi_token", "didomi_dcs"]; 5 // Keep Google Analytics cookies (_ga, _gid, _ga_*) â required for GCM v2 consent signaling 6 var itemsToKeepRegex = /^_ga|^_gid/; 7 8 var getCookieValue = function (cookieName) { 9 var cookie = document.cookie.split(";").filter(function (cookieValue) { 10 return cookieValue.indexOf(cookieName) !== -1; 11 })[0]; 12 if (cookie) { 13 return cookie.split("=")[1]; 14 } 15 }; 16 17 var deleteCookie = function (name, domain, path) { 18 path = path || "/"; 19 var cookie = [ 20 name + "=", 21 "expires=Thu, 01 Jan 1970 00:00:01 GMT", 22 "path=" + path, 23 ]; 24 if (domain) { 25 cookie.push("domain=" + domain); 26 } 27 document.cookie = cookie.join(";"); 28 }; 29 30 var areAllVendorsAndPurposesDisabled = function () { 31 var data = window.Didomi.getCurrentUserStatus(); 32 var excludedIds = []; 33 34 var vendors = data.vendors; 35 var purposes = data.purposes; 36 var vendorIds = Object.keys(vendors); 37 var purposeIds = Object.keys(purposes); 38 39 var vendorsEnabledNumber = vendorIds.filter(function (id) { 40 return vendors[id].enabled && !excludedIds.includes(id); 41 }).length; 42 var vendorsDisabledNumber = vendorIds.filter(function (id) { 43 return !vendors[id].enabled && !excludedIds.includes(id); 44 }).length; 45 var purposesEnabledNumber = purposeIds.filter(function (id) { 46 return purposes[id].enabled; 47 }).length; 48 var purposesDisabledNumber = purposeIds.filter(function (id) { 49 return !purposes[id].enabled; 50 }).length; 51 52 return ( 53 vendorsEnabledNumber + purposesEnabledNumber === 0 && 54 vendorsDisabledNumber + purposesDisabledNumber > 0 55 ); 56 }; 57 58 var consentEventsCount = 0; 59 var existingConsentString = getCookieValue("euconsent-v2"); 60 window.didomiEventListeners = window.didomiEventListeners || []; 61 window.didomiEventListeners.push({ 62 event: "consent.changed", 63 listener: function () { 64 var consentUpdate = 65 consentEventsCount > 0 ? true : !!existingConsentString; 66 if (consentUpdate && areAllVendorsAndPurposesDisabled()) { 67 var cookiesToDelete = document.cookie 68 .split(";") 69 .map(function (cookie) { 70 return cookie.split("=")[0].trim(); 71 }) 72 .filter(function (cookieName) { 73 return ( 74 itemsToKeep.indexOf(cookieName) === -1 && 75 !cookieName.match(itemsToKeepRegex) 76 ); 77 }); 78 79 cookiesToDelete.forEach(function (cookieToDelete) { 80 var domains = ( 81 ".#" + document.location.host.replaceAll(".", "#.#") 82 ).split("#"); 83 while (domains.length) { 84 var possibleDomain = domains.join(""); 85 deleteCookie(cookieToDelete, possibleDomain); 86 domains.shift(); 87 } 88 deleteCookie(cookieToDelete, ""); 89 }); 90 91 var localStorageItemsToDelete = Object.keys(window.localStorage).filter( 92 function (localStorageItemName) { 93 return ( 94 itemsToKeep.indexOf(localStorageItemName) === -1 && 95 !localStorageItemName.match(itemsToKeepRegex) 96 ); 97 }, 98 ); 99 100 localStorageItemsToDelete.forEach(function (localStorageItemName) { 101 window.localStorage.removeItem(localStorageItemName); 102 }); 103 104 window.location.reload(); 105 } 106 107 consentEventsCount++; 108 }, 109 }); 110})(); 111!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="feb4fe16-8d4b-509c-b631-3bde72edcef5")}catch(e){}}(); 112//# debugId=feb4fe16-8d4b-509c-b631-3bde72edcef5
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.