@synapxlab/cookie-core
Version:
Bannière de consentement cookies RGPD ultra-légère (18KB) - Version light sans logging intégré (JS pur, zéro dépendance)
1 lines • 17.6 kB
JavaScript
(()=>{"use strict";var e={56:(e,t,i)=>{e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},72:e=>{var t=[];function i(e){for(var i=-1,n=0;n<t.length;n++)if(t[n].identifier===e){i=n;break}return i}function n(e,n){for(var o={},a=[],s=0;s<e.length;s++){var r=e[s],p=n.base?r[0]+n.base:r[0],l=o[p]||0,d="".concat(p," ").concat(l);o[p]=l+1;var u=i(d),m={css:r[1],media:r[2],sourceMap:r[3],supports:r[4],layer:r[5]};if(-1!==u)t[u].references++,t[u].updater(m);else{var v=c(m,n);n.byIndex=s,t.splice(s,0,{identifier:d,updater:v,references:1})}a.push(d)}return a}function c(e,t){var i=t.domAPI(t);return i.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;i.update(e=t)}else i.remove()}}e.exports=function(e,c){var o=n(e=e||[],c=c||{});return function(e){e=e||[];for(var a=0;a<o.length;a++){var s=i(o[a]);t[s].references--}for(var r=n(e,c),p=0;p<o.length;p++){var l=i(o[p]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}o=r}}},113:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var i="",n=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),n&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),n&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i}).join("")},t.i=function(e,i,n,c,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(n)for(var s=0;s<this.length;s++){var r=this[s][0];null!=r&&(a[r]=!0)}for(var p=0;p<e.length;p++){var l=[].concat(e[p]);n&&a[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),i&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=i):l[2]=i),c&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=c):l[4]="".concat(c)),t.push(l))}},t}},421:(e,t,i)=>{i.d(t,{A:()=>s});var n=i(601),c=i.n(n),o=i(314),a=i.n(o)()(c());a.push([e.id,':root{--cc-bg: #ffffff;--cc-text: #111827;--cc-muted: #6b7280;--cc-line: #e5e7eb;--cc-surface: #f3f4f6;--cc-accent: #18a60b;--cc-border: var(--cc-line)}.pmcpli-cookiebanner{position:fixed;right:18px;bottom:18px;z-index:99999;background:var(--cc-bg);color:var(--cc-text);width:520px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);border:1px solid var(--cc-border);border-radius:10px;box-shadow:0 14px 28px rgba(0,0,0,.22),0 10px 10px rgba(0,0,0,.18);display:grid;grid-template-rows:auto 1fr auto;padding:14px 16px;overflow:hidden}.pmcpli-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.pmcpli-title{font-weight:700;font-size:16px;line-height:1.2}.pmcpli-close{cursor:pointer;color:#6b7280}.pmcpli-close:hover{color:#374151}.pmcpli-close-icon{width:18px;height:18px}.pmcpli-divider{height:1px;background:var(--cc-line);margin:10px 0}@media(min-width: 350px){.pmcpli-cookiebanner .pmcpli-body{min-width:300px}}.pmcpli-cookiebanner .pmcpli-body{grid-column:span 3;max-height:55vh;overflow-x:hidden;overflow-y:auto;width:100%}.pmcpli-message{color:var(--cc-muted);font-size:14px}.pmcpli-cookiebanner .pmcpli-categories{display:none}.pmcpli-category{background:var(--cc-surface);border-radius:8px;padding:6px 8px;margin:8px 0}.pmcpli-category-header{width:100%;display:grid;grid-template-columns:1fr auto 20px;align-items:center;gap:10px;cursor:pointer}.pmcpli-category-title{font-weight:600}.pmcpli-category .pmcpli-open{display:inline-flex;transform:rotate(0deg);transition:transform .2s ease}.pmcpli-description{margin-top:8px;color:#4b5563;font-size:14px;line-height:1.55}.pmcpli-description ul{margin:.5rem 0 .25rem 1.25rem}.checkbox-wrapper{position:relative}.checkbox-wrapper input[type=checkbox]{position:absolute;height:0;width:0;visibility:hidden}.checkbox-wrapper label{--size:31px;cursor:pointer;width:var(--size);height:calc(var(--size)/2);background:#ddd;display:block;border-radius:100px;position:relative;transition:background .25s ease}.checkbox-wrapper label::after{content:"";position:absolute;top:6%;left:2.5%;width:47%;height:89%;background:#fff;border-radius:90px;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:all .25s ease}.checkbox-wrapper label:active::after{width:55%}.checkbox-wrapper input:checked+label{background:var(--cc-accent)}.checkbox-wrapper input:checked+label::after{left:97.5%;transform:translateX(-100%)}.pmcpli-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.pmcpli-btn{border:1px solid var(--cc-line);background:#fff;color:#374151;border-radius:8px;padding:10px 14px;font-weight:600;cursor:pointer}.pmcpli-accept{background:var(--cc-accent);color:#fff;border-color:var(--cc-accent)}.pmcpli-deny{background:#f9fafb}.pmcpli-save-preferences{background:#eef2f7}.pmcpli-cookiebanner a{color:inherit;text-decoration:none}.pmcpli-cookiebanner a:hover{text-decoration:underline}@media(max-width: 640px){.pmcpli-cookiebanner{right:12px;left:12px;bottom:12px;width:auto}.pmcpli-buttons{flex-direction:column}}',""]);const s=a},540:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},601:e=>{e.exports=function(e){return e[1]}},659:e=>{var t={};e.exports=function(e,i){var n=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(i)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var n="";i.supports&&(n+="@supports (".concat(i.supports,") {")),i.media&&(n+="@media ".concat(i.media," {"));var c=void 0!==i.layer;c&&(n+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),n+=i.css,c&&(n+="}"),i.media&&(n+="}"),i.supports&&(n+="}");var o=i.sourceMap;o&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}}},t={};function i(n){var c=t[n];if(void 0!==c)return c.exports;var o=t[n]={id:n,exports:{}};return e[n](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.nc=void 0;var n=i(72),c=i.n(n),o=i(825),a=i.n(o),s=i(659),r=i.n(s),p=i(56),l=i.n(p),d=i(540),u=i.n(d),m=i(113),v=i.n(m),f=i(421),b={};b.styleTagTransform=v(),b.setAttributes=l(),b.insert=r().bind(null,"head"),b.domAPI=a(),b.insertStyleElement=u(),c()(f.A,b),f.A&&f.A.locals&&f.A.locals;const h="politecookiebanner",g=()=>{try{return JSON.parse(localStorage.getItem(h)||"")}catch{return null}},y=(e,t=document)=>Array.from(t.querySelectorAll(e)),x=(e,t=document)=>t.querySelector(e),k='input[name^="politecookie["]',w=(e,t)=>{y(k,e).forEach(e=>{e.checked=!!t})},E=(e,t)=>{const i=x(".pmcpli-accept",e),n=x(".pmcpli-deny",e);i&&n&&("all"===t?(i.setAttribute("aria-pressed","true"),n.setAttribute("aria-pressed","false")):"none"===t?(i.setAttribute("aria-pressed","false"),n.setAttribute("aria-pressed","true")):(i.setAttribute("aria-pressed","false"),n.setAttribute("aria-pressed","false")))},C=e=>{const t=y(k,e);if(0===t.length)return void E(e,"mixed");const i=t.every(e=>e.checked),n=t.every(e=>!e.checked);E(e,i?"all":n?"none":"mixed")};function L(){document.getElementById("politecookiebanner")||document.body.insertAdjacentHTML("beforeend",'<div id="politecookiebanner" class="pmcpli-cookiebanner pmcpli-show" aria-label="cookiebanner" title="cookiebanner" aria-modal="true" data-nosnippet="true" role="dialog" aria-live="polite" style="display:none;">\n <div class="pmcpli-header">\n <div class="pmcpli-title">Gérer le consentement aux cookies</div>\n <div class="pmcpli-close" tabindex="0" role="button" title="cookiebanner" aria-label="close-cookiebanner" role-js="close">\n <svg aria-hidden="true" focusable="false" viewBox="0 0 352 512" class="pmcpli-close-icon"><path fill="currentColor" d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"/></svg>\n </div>\n </div>\n <div class="pmcpli-divider pmcpli-divider-header"></div>\n <div class="pmcpli-body">\n <div class="pmcpli-message">Pour vous offrir la meilleure expérience possible, on utilise des cookies (pas les gourmands, hélas) pour garder quelques infos sur votre appareil. En acceptant, vous nous aidez à mieux comprendre comment vous naviguez ici. Si vous refusez, certaines fonctionnalités pourraient ne pas marcher aussi bien.</div>\n <div class="pmcpli-categories" style="display:none;">\n <div class="pmcpli-category pmcpli-functional">\n <div class="pmcpli-category-header pmcpli-category-clickable" tabindex="0" role="button" aria-expanded="false">\n <span class="pmcpli-category-title">Stockage strictement nécessaire</span> \n <span class="pmcpli-category-status">Toujours actif</span>\n <span class="pmcpli-icon pmcpli-open">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18">\n <path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/>\n </svg>\n </span>\n </div>\n <div class="pmcpli-description" style="display:none;">\n <span class="pmcpli-description-functional">Le stockage ou l\'accès aux informations est uniquement utilisé pour des finalités techniques indispensables.</span>\n </div>\n </div>\n <div class="pmcpli-category pmcpli-statistics">\n <div class="pmcpli-category-header pmcpli-category-clickable" tabindex="0" role="button" aria-expanded="false">\n <span class="pmcpli-category-title">Cookies</span>\n <div class="checkbox-wrapper">\n <input type="checkbox" id="politecookiecheckboxcookies" name="politecookie[\'cookies\']">\n <label for="politecookiecheckboxcookies"></label>\n </div>\n <span class="pmcpli-icon pmcpli-open">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18">\n <path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/>\n </svg>\n </span>\n </div>\n <div class="pmcpli-description" style="display:none;">\n <span class="pmcpli-description-statistics-anonymous">Ces cookies ne sont pas utilisés à des fins publicitaires, mais ils jouent un rôle essentiel dans l\'amélioration de votre expérience utilisateur.</span>\n </div>\n </div>\n <div class="pmcpli-category pmcpli-statistics">\n <div class="pmcpli-category-header pmcpli-category-clickable" tabindex="0" role="button" aria-expanded="false">\n <span class="pmcpli-category-title">Statistiques</span>\n <div class="checkbox-wrapper">\n <input type="checkbox" id="politecookiecheckboxstatistics" name="politecookie[\'statistics\']">\n <label for="politecookiecheckboxstatistics"></label>\n </div>\n <span class="pmcpli-icon pmcpli-open">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18">\n <path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/>\n </svg>\n </span>\n </div>\n <div class="pmcpli-description" style="display:none;">\n <span class="pmcpli-description-statistics-anonymous">Le stockage ou l\'accès technique est utilisé exclusivement à des fins statistiques.</span>\n </div>\n </div>\n <div class="pmcpli-category pmcpli-marketing">\n <div class="pmcpli-category-header pmcpli-category-clickable" tabindex="0" role="button" aria-expanded="false">\n <span class="pmcpli-category-title">Marketing</span>\n <div class="checkbox-wrapper">\n <input type="checkbox" id="politecookiecheckboxmarketing" name="politecookie[\'marketing\']">\n <label for="politecookiecheckboxmarketing"></label>\n </div>\n <span class="pmcpli-icon pmcpli-open">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18">\n <path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/>\n </svg>\n </span>\n </div>\n <div class="pmcpli-description" style="display:none;">\n <span class="pmcpli-description-marketing">Le stockage ou l\'accès technique est nécessaire pour créer des profils d\'utilisateurs afin d\'envoyer de la publicité.</span>\n </div>\n </div>\n </div>\n </div>\n <div class="pmcpli-links pmcpli-information p-2"></div>\n <div class="pmcpli-divider pmcpli-footer"></div>\n <div class="pmcpli-buttons">\n <button class="pmcpli-btn pmcpli-accept" aria-pressed="false">Tout Accepter</button>\n <button class="pmcpli-btn pmcpli-deny" aria-pressed="false">Refuser</button>\n <button class="pmcpli-btn pmcpli-view-preferences">Les préférences</button>\n <button class="pmcpli-btn pmcpli-save-preferences" style="display:none;">Enregistrer</button>\n <button class="pmcpli-btn pmcpli-del-preferences" style="display:none;">Supprimer</button>\n </div>\n <div class="pmcpli-links pmcpli-documents"></div>\n</div>')}const S=(e=!1)=>{L();const t=document.getElementById("politecookiebanner");t&&(t.style.display="block",setTimeout(()=>{const e=t.querySelector("button");e&&e.focus()},100),e&&(t.querySelector(".pmcpli-categories").style.display="block",t.querySelector(".pmcpli-save-preferences").style.display="inline-block",t.querySelector(".pmcpli-del-preferences").style.display="inline-block",t.querySelector(".pmcpli-view-preferences").style.display="none"),C(t))};window.CookieConsent={open:S,reset:()=>{localStorage.removeItem(h),S(!0)},getPreferences:g,hasConsent:e=>!!g()?.[e]},document.addEventListener("DOMContentLoaded",()=>{L(),function(){const e=document.getElementById("politecookiebanner");if(!e)return;const t=g();t?(y(k,e).forEach(e=>{const i=e.name.match(/^politecookie\['(.+)'\]$/);i&&(e.checked=!!t[i[1]])}),C(e)):(e.style.display="block",x(".pmcpli-categories",e).style.display="none",C(e));const i=()=>{var t;t=(e=>{const t={};return y(k,e).forEach(e=>{const i=e.name.match(/^politecookie\['(.+)'\]$/);i&&(t[i[1]]=!!e.checked)}),t})(e),localStorage.setItem(h,JSON.stringify(t||{})),document.dispatchEvent(new CustomEvent("cookieConsentChanged",{detail:{preferences:t}})),e.style.display="none"},n={".pmcpli-close":()=>{e.style.display="none"},".pmcpli-accept":()=>{w(e,!0),E(e,"all"),i()},".pmcpli-deny":()=>{w(e,!1),E(e,"none"),i()},".pmcpli-view-preferences":()=>{const t=x(".pmcpli-categories",e),i=x(".pmcpli-save-preferences",e),n=x(".pmcpli-del-preferences",e),c=x(".pmcpli-view-preferences",e),o="none"===t.style.display||!t.style.display;t.style.display=o?"block":"none",i.style.display=n.style.display=o?"inline-block":"none",c.style.display=o?"none":"inline-block"},".pmcpli-save-preferences":i,".pmcpli-del-preferences":()=>{localStorage.removeItem(h),document.dispatchEvent(new CustomEvent("cookieConsentChanged",{detail:{preferences:null,action:"deleted"}})),w(e,!1),C(e),e.style.display="none"}};Object.entries(n).forEach(([t,i])=>{x(t,e)?.addEventListener("click",i)}),y(k,e).forEach(t=>{t.addEventListener("change",()=>{C(e)})}),y(".pmcpli-category-clickable",e).forEach(e=>{const t=()=>{const t=e.closest(".pmcpli-category"),i=x(".pmcpli-description",t),n=x(".pmcpli-icon svg",e);"true"===e.getAttribute("aria-expanded")?(i.style.display="none",e.setAttribute("aria-expanded","false"),n&&(n.style.transform="rotate(0deg)")):(i.style.display="block",e.setAttribute("aria-expanded","true"),n&&(n.style.transform="rotate(180deg)"))};e.addEventListener("click",e=>{e.target.closest(".checkbox-wrapper")||t()}),e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t())})}),e.addEventListener("keydown",t=>{"Escape"===t.key&&(e.style.display="none")}),document.addEventListener("click",e=>{e.target.closest("#openpolitecookie, #openpolitecookie a")&&(e.preventDefault(),S(!0))})}()})})();