From 1e030fdf2661bdbcec8f083d35a80d667e8b5bb0 Mon Sep 17 00:00:00 2001
From: Phil Ricketts <812139+replete@users.noreply.github.com>
Date: Sun, 23 Jun 2024 21:02:56 +0100
Subject: [PATCH] Make CSS state classes show by default
---
biscuitman.js | 5 +++--
dist/biscuitman.min.js | 2 +-
dist/biscuitman.withcss.min.js | 2 +-
index.html | 16 ++++++++++++++++
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/biscuitman.js b/biscuitman.js
index 647b9a8..4c37578 100644
--- a/biscuitman.js
+++ b/biscuitman.js
@@ -119,8 +119,9 @@
const displayUI = (show) => ui.classList.toggle('bm-hide', !show)
const applyCssClasses = () => {
- const { consentTime, ...consents} = getConsents()
- if (!consentTime) h.className = h.className.replace(/\bbm-[^\s]+(\s+|$)/g, '').trim();
+ let { consentTime, ...consents } = getConsents()
+ // if (!consentTime) h.className = h.className.replace(/\bbm-[^\s]+(\s+|$)/g, '').trim();
+ if (!consentTime) consents = Object.fromEntries(o.sections.slice(1).map(sectionName => [sectionName, false]));
for (let [name, granted] of Object.entries(consents)) {
h.classList.toggle(`bm-${name}`, granted)
diff --git a/dist/biscuitman.min.js b/dist/biscuitman.min.js
index 868bbd2..3c6d024 100644
--- a/dist/biscuitman.min.js
+++ b/dist/biscuitman.min.js
@@ -1 +1 @@
-/*! biscuitman.js 0.3.8 */((e,t,o,a,n)=>{let i;let s={key:"myconsent",global:"Consent",force:!1,enableMore:!0,sections:["essential"],title:"Your privacy matters",message:"We use cookies",settings:"Settings",reject:"Reject All",accept:"Accept All",save:"Save My Settings",settingsTitle:"My Consent Settings",info:"",more:"(Show more)",noCookies:"No cookies to display",acceptNonEU:!1,...t.biscuitman},c=e.createElement("div"),l=e=>c.classList.toggle("bm-hide",!e),r=()=>{let{consentTime:e,...t}=f();for(let[n,i]of(e||(a.className=a.className.replace(/\bbm-[^\s]+(\s+|$)/g,"").trim()),o.entries(t)))a.classList.toggle(`bm-${n}`,i),a.classList.toggle(`bm-no-${n}`,!i)};function d(e){let t=e.target.dataset.id;switch(b("button",{id:t}),t){case"accept":k(!0);break;case"close":i.close();break;case"settings":u();break;case"save":k();break;case"reject":k(!1)}}function m(){b("close")}function p(e){s.force&&e.preventDefault()}function u(){b("open"),i.showModal()}function b(t,o){let a=`${n}:${t}`,i={...void 0!==o&&o,time:+new Date};e.dispatchEvent(new CustomEvent(a,i)),console.debug(a,i)}let $=e=>{t[s.global]=e,r()},f=()=>t[s.global];function g(){try{return JSON.parse(localStorage.getItem(s.key))}catch(e){return console.error(e),localStorage.removeItem(s.key),{}}}function v(){let t=o.fromEntries(o.entries(localStorage)),a=o.fromEntries(e.cookie.split("; ").map(e=>e.split("="))),{consentTime:n,...i}=g()||s.sections.slice(1).reduce((e,t)=>(e[t]=!1,{consentTime:void 0,...e}),{});for(let[n,c]of o.entries(i)){if(c)continue;let i=o.keys(s[`${n}Cookies`]||{});for(let n of(i.filter(e=>e.endsWith("*")).map(e=>{o.keys({...a,...t}).map(t=>{t.startsWith(e.slice(0,-1))&&i.push(t)})}),i)){if(a[n]){let t=`${n}=;expires=Thu, 01 Jan 1970 00:00:01 UTC;path=/;`;e.cookie=t,e.cookie=`${t}domain=${location.hostname};`,e.cookie=`${t}domain=.${location.hostname};`,b("delete",{cookie:n})}t[n]&&(localStorage.removeItem(n),b("delete",{localStorage:n}))}}}function k(e){let t=void 0===e,o={consentTime:+new Date};s.sections.forEach(a=>{if("essential"===a)return!1;let n=c.querySelector(`[data-s=${a}]`),i=t?n.checked:e;o[a]=i,t||(n.checked=e)}),$(o),localStorage.setItem(s.key,JSON.stringify(o)),b("save",{data:o}),v(),h(),i.close(),l(!1)}function h(){e.querySelectorAll("script[data-consent]").forEach(t=>{if(!f()[t.dataset.consent])return!1;let o=e.createElement("script");for(let{name:e,value:a}of t.attributes)e.startsWith("data-")||"type"===e||o.setAttribute(e,a);o.setAttribute("type",t.dataset.type||"text/javascript"),t.src||(o.textContent=t.textContent),t.parentNode.replaceChild(o,t),b("inject",{el:t,...t.id&&{id:t.id}}),t.src&&""!==t.textContent.trim()&&o.addEventListener("load",()=>{let a=e.createElement("script");a.textContent=t.textContent,t.id&&(a.id=t.id+"-after"),o.insertAdjacentElement("afterend",a),b("inject",{el:a,parent:t,...a.id&&{id:a.id}})})})}$(g()||{});let y=Intl.DateTimeFormat().resolvedOptions().timeZone,E=/^(GMT|UTC)$/.test(y)||/(Europe|BST|CEST|CET|EET|IST|WEST|WET|GMT-1|GMT-2|UTC+1|UTC+2|UTC+3)/.test(y);s.acceptNonEU&&!E&&(k(!0),l(!1)),function(){c.classList.add(n),c.style="position:fixed;background:#fff;bottom:0",c.innerHTML=`${s.title}${s.message}
`.replaceAll("{link}",`${s.linkText}`),c.querySelectorAll("button").forEach(e=>e.addEventListener("click",d)),(i=c.querySelector("dialog")).addEventListener("close",m),i.addEventListener("cancel",p);let t=c.querySelector(".more");t&&t.addEventListener("click",t.remove),e.body.appendChild(c)}(),v(),t[s.global].consentTime?(l(!1),h()):s.force&&u(),t.bmInvalidate=()=>{b("invalidate",{data:f()}),k(!1),$({}),localStorage.removeItem(s.key),l(!0)},t.bmUpdate=()=>{b("update",{data:f()}),u()}})(document,window,Object,document.documentElement,"biscuitman");
\ No newline at end of file
+/*! biscuitman.js 0.3.8 */((e,t,o,a,n)=>{let i;let s={key:"myconsent",global:"Consent",force:!1,enableMore:!0,sections:["essential"],title:"Your privacy matters",message:"We use cookies",settings:"Settings",reject:"Reject All",accept:"Accept All",save:"Save My Settings",settingsTitle:"My Consent Settings",info:"",more:"(Show more)",noCookies:"No cookies to display",acceptNonEU:!1,...t.biscuitman},c=e.createElement("div"),l=e=>c.classList.toggle("bm-hide",!e),r=()=>{let{consentTime:e,...t}=$();for(let[n,i]of(e||(t=o.fromEntries(s.sections.slice(1).map(e=>[e,!1]))),o.entries(t)))a.classList.toggle(`bm-${n}`,i),a.classList.toggle(`bm-no-${n}`,!i)};function d(e){let t=e.target.dataset.id;switch(b("button",{id:t}),t){case"accept":k(!0);break;case"close":i.close();break;case"settings":u();break;case"save":k();break;case"reject":k(!1)}}function m(){b("close")}function p(e){s.force&&e.preventDefault()}function u(){b("open"),i.showModal()}function b(t,o){let a=`${n}:${t}`,i={...void 0!==o&&o,time:+new Date};e.dispatchEvent(new CustomEvent(a,i)),console.debug(a,i)}let f=e=>{t[s.global]=e,r()},$=()=>t[s.global];function g(){try{return JSON.parse(localStorage.getItem(s.key))}catch(e){return console.error(e),localStorage.removeItem(s.key),{}}}function v(){let t=o.fromEntries(o.entries(localStorage)),a=o.fromEntries(e.cookie.split("; ").map(e=>e.split("="))),{consentTime:n,...i}=g()||s.sections.slice(1).reduce((e,t)=>(e[t]=!1,{consentTime:void 0,...e}),{});for(let[n,c]of o.entries(i)){if(c)continue;let i=o.keys(s[`${n}Cookies`]||{});for(let n of(i.filter(e=>e.endsWith("*")).map(e=>{o.keys({...a,...t}).map(t=>{t.startsWith(e.slice(0,-1))&&i.push(t)})}),i)){if(a[n]){let t=`${n}=;expires=Thu, 01 Jan 1970 00:00:01 UTC;path=/;`;e.cookie=t,e.cookie=`${t}domain=${location.hostname};`,e.cookie=`${t}domain=.${location.hostname};`,b("delete",{cookie:n})}t[n]&&(localStorage.removeItem(n),b("delete",{localStorage:n}))}}}function k(e){let t=void 0===e,o={consentTime:+new Date};s.sections.forEach(a=>{if("essential"===a)return!1;let n=c.querySelector(`[data-s=${a}]`),i=t?n.checked:e;o[a]=i,t||(n.checked=e)}),f(o),localStorage.setItem(s.key,JSON.stringify(o)),b("save",{data:o}),v(),h(),i.close(),l(!1)}function h(){e.querySelectorAll("script[data-consent]").forEach(t=>{if(!$()[t.dataset.consent])return!1;let o=e.createElement("script");for(let{name:e,value:a}of t.attributes)e.startsWith("data-")||"type"===e||o.setAttribute(e,a);o.setAttribute("type",t.dataset.type||"text/javascript"),t.src||(o.textContent=t.textContent),t.parentNode.replaceChild(o,t),b("inject",{el:t,...t.id&&{id:t.id}}),t.src&&""!==t.textContent.trim()&&o.addEventListener("load",()=>{let a=e.createElement("script");a.textContent=t.textContent,t.id&&(a.id=t.id+"-after"),o.insertAdjacentElement("afterend",a),b("inject",{el:a,parent:t,...a.id&&{id:a.id}})})})}f(g()||{});let y=Intl.DateTimeFormat().resolvedOptions().timeZone,E=/^(GMT|UTC)$/.test(y)||/(Europe|BST|CEST|CET|EET|IST|WEST|WET|GMT-1|GMT-2|UTC+1|UTC+2|UTC+3)/.test(y);s.acceptNonEU&&!E&&(k(!0),l(!1)),function(){c.classList.add(n),c.style="position:fixed;background:#fff;bottom:0",c.innerHTML=`${s.title}${s.message}
`.replaceAll("{link}",`${s.linkText}`),c.querySelectorAll("button").forEach(e=>e.addEventListener("click",d)),(i=c.querySelector("dialog")).addEventListener("close",m),i.addEventListener("cancel",p);let t=c.querySelector(".more");t&&t.addEventListener("click",t.remove),e.body.appendChild(c)}(),v(),t[s.global].consentTime?(l(!1),h()):s.force&&u(),t.bmInvalidate=()=>{b("invalidate",{data:$()}),k(!1),f({}),localStorage.removeItem(s.key),l(!0)},t.bmUpdate=()=>{b("update",{data:$()}),u()}})(document,window,Object,document.documentElement,"biscuitman");
\ No newline at end of file
diff --git a/dist/biscuitman.withcss.min.js b/dist/biscuitman.withcss.min.js
index 95e44e7..d437481 100644
--- a/dist/biscuitman.withcss.min.js
+++ b/dist/biscuitman.withcss.min.js
@@ -1 +1 @@
-/*! biscuitman.js 0.3.8 */((e,t,o,a,n)=>{let i;let s={key:"myconsent",global:"Consent",force:!1,enableMore:!0,sections:["essential"],title:"Your privacy matters",message:"We use cookies",settings:"Settings",reject:"Reject All",accept:"Accept All",save:"Save My Settings",settingsTitle:"My Consent Settings",info:"",more:"(Show more)",noCookies:"No cookies to display",acceptNonEU:!1,...t.biscuitman},c=e.createElement("div"),l=e=>c.classList.toggle("bm-hide",!e),r=()=>{let{consentTime:e,...t}=f();for(let[n,i]of(e||(a.className=a.className.replace(/\bbm-[^\s]+(\s+|$)/g,"").trim()),o.entries(t)))a.classList.toggle(`bm-${n}`,i),a.classList.toggle(`bm-no-${n}`,!i)};function d(e){let t=e.target.dataset.id;switch(b("button",{id:t}),t){case"accept":k(!0);break;case"close":i.close();break;case"settings":u();break;case"save":k();break;case"reject":k(!1)}}function m(){b("close")}function p(e){s.force&&e.preventDefault()}function u(){b("open"),i.showModal()}function b(t,o){let a=`${n}:${t}`,i={...void 0!==o&&o,time:+new Date};e.dispatchEvent(new CustomEvent(a,i)),console.debug(a,i)}let $=e=>{t[s.global]=e,r()},f=()=>t[s.global];function g(){try{return JSON.parse(localStorage.getItem(s.key))}catch(e){return console.error(e),localStorage.removeItem(s.key),{}}}function v(){let t=o.fromEntries(o.entries(localStorage)),a=o.fromEntries(e.cookie.split("; ").map(e=>e.split("="))),{consentTime:n,...i}=g()||s.sections.slice(1).reduce((e,t)=>(e[t]=!1,{consentTime:void 0,...e}),{});for(let[n,c]of o.entries(i)){if(c)continue;let i=o.keys(s[`${n}Cookies`]||{});for(let n of(i.filter(e=>e.endsWith("*")).map(e=>{o.keys({...a,...t}).map(t=>{t.startsWith(e.slice(0,-1))&&i.push(t)})}),i)){if(a[n]){let t=`${n}=;expires=Thu, 01 Jan 1970 00:00:01 UTC;path=/;`;e.cookie=t,e.cookie=`${t}domain=${location.hostname};`,e.cookie=`${t}domain=.${location.hostname};`,b("delete",{cookie:n})}t[n]&&(localStorage.removeItem(n),b("delete",{localStorage:n}))}}}function k(e){let t=void 0===e,o={consentTime:+new Date};s.sections.forEach(a=>{if("essential"===a)return!1;let n=c.querySelector(`[data-s=${a}]`),i=t?n.checked:e;o[a]=i,t||(n.checked=e)}),$(o),localStorage.setItem(s.key,JSON.stringify(o)),b("save",{data:o}),v(),h(),i.close(),l(!1)}function h(){e.querySelectorAll("script[data-consent]").forEach(t=>{if(!f()[t.dataset.consent])return!1;let o=e.createElement("script");for(let{name:e,value:a}of t.attributes)e.startsWith("data-")||"type"===e||o.setAttribute(e,a);o.setAttribute("type",t.dataset.type||"text/javascript"),t.src||(o.textContent=t.textContent),t.parentNode.replaceChild(o,t),b("inject",{el:t,...t.id&&{id:t.id}}),t.src&&""!==t.textContent.trim()&&o.addEventListener("load",()=>{let a=e.createElement("script");a.textContent=t.textContent,t.id&&(a.id=t.id+"-after"),o.insertAdjacentElement("afterend",a),b("inject",{el:a,parent:t,...a.id&&{id:a.id}})})})}$(g()||{});let y=Intl.DateTimeFormat().resolvedOptions().timeZone,E=/^(GMT|UTC)$/.test(y)||/(Europe|BST|CEST|CET|EET|IST|WEST|WET|GMT-1|GMT-2|UTC+1|UTC+2|UTC+3)/.test(y);s.acceptNonEU&&!E&&(k(!0),l(!1)),function(){c.classList.add(n),c.style="position:fixed;background:#fff;bottom:0",c.innerHTML=`${s.title}${s.message}
`.replaceAll("{link}",`${s.linkText}`),c.querySelectorAll("button").forEach(e=>e.addEventListener("click",d)),(i=c.querySelector("dialog")).addEventListener("close",m),i.addEventListener("cancel",p);let t=c.querySelector(".more");t&&t.addEventListener("click",t.remove),e.body.appendChild(c)}(),v(),t[s.global].consentTime?(l(!1),h()):s.force&&u(),t.bmInvalidate=()=>{b("invalidate",{data:f()}),k(!1),$({}),localStorage.removeItem(s.key),l(!0)},t.bmUpdate=()=>{b("update",{data:f()}),u()}})(document,window,Object,document.documentElement,"biscuitman");;((d)=>{let c=d.createElement('style');c.textContent=`.biscuitman{--t:#444;--b:#fff;--c:#105d89;background:var(--b);box-sizing:border-box;width:100%;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;box-shadow:0 -2px 10px #00000029}.biscuitman *{box-sizing:border-box;margin:0;padding:0;font-size:16px;line-height:1.4em}.biscuitman:has([open]){transform:translateY(100%)}.biscuitman.bm-hide{padding:0}.biscuitman.bm-hide article{display:none}.biscuitman article{position:relative}@media (width>=770px){.biscuitman article{padding-right:calc(max(300px,30vw) + 20px)}.biscuitman article nav{width:30vw;min-width:300px;position:absolute;bottom:50%;right:0;transform:translateY(50%)}}.biscuitman article p{color:var(--t);margin:10px 0;font-size:13px}@media (width>=575px){.biscuitman article p{font-size:14px}}.biscuitman button{background:var(--b);border:2px solid var(--c);color:var(--c);cursor:pointer;border-radius:3px;margin-top:10px;padding:.8em;font-size:13px;line-height:1em}.biscuitman button[data-id=accept]{background:var(--c);color:var(--b)!important}.biscuitman button[data-id=close]{color:#000;opacity:.6;-webkit-user-select:none;user-select:none;z-index:2;background:0 0;border:none;outline:none;padding:10px;font-size:24px;line-height:1em;position:absolute;top:0;right:10px}.biscuitman button[disabled]{display:none}.biscuitman button:hover{opacity:.8}@media (width>=576px){.biscuitman nav{flex-direction:row-reverse;gap:10px;width:100%;display:flex}.biscuitman nav button{flex-grow:1;margin-bottom:0}}@media (width<=575px){.biscuitman nav{flex-direction:column;flex-grow:1;display:flex}}.biscuitman dialog{border:0;width:100%;max-width:100%;height:100%;max-height:100%}@media (width>=576px){.biscuitman dialog{border-radius:10px;width:90vw;max-width:860px;max-height:80vh;margin:auto;box-shadow:0 0 8px #0000004d}}@media (width>=576px) and (height>=1134px){.biscuitman dialog{height:890px}}.biscuitman dialog nav{justify-self:flex-end;position:relative}.biscuitman .bm-dialog{flex-direction:column;height:100%;padding:20px;display:flex}.biscuitman .bm-dialog b{position:relative}.biscuitman .bm-dialog>b:after{content:"";background:linear-gradient(180deg,var(--b)20%,transparent);pointer-events:none;z-index:1;width:100%;height:25px;margin-bottom:-24px;position:absolute;bottom:0;left:0}.biscuitman .bm-dialog nav:after{content:"";background:linear-gradient(0deg,var(--b)20%,transparent);pointer-events:none;width:100%;height:25px;position:absolute;top:-24px;left:0}.biscuitman .bm-sections{scrollbar-color:#ddd var(--b);flex-shrink:1;height:100%;padding:15px 0;position:relative;overflow-y:scroll}@media (width>=576px){.biscuitman .bm-sections{margin-right:-18px;padding-right:4px}}.biscuitman .bm-sections>p{padding-right:30px;line-height:18px}.biscuitman .bm-sections>p span{padding-bottom:5px;font-size:13px;display:block}@media (width>=576px){.biscuitman .bm-sections>p span{font-size:14px}}.biscuitman .bm-sections>p span:has(.more)~span{display:none}.biscuitman a{font-size:inherit;color:var(--c);cursor:pointer;text-decoration:none;display:inline-block}.biscuitman a:hover{text-decoration:underline}.biscuitman section{margin-bottom:10px;position:relative}.biscuitman section:first-of-type{margin-top:10px}.biscuitman details{border:1px solid #ccc;border-radius:5px;padding:10px;list-style:none;box-shadow:0 2px 4px #0000001a}.biscuitman details[open] summary b:after{margin:-3px 0 0 -2px;transform:rotate(45deg)scale(.3)}.biscuitman summary{cursor:pointer;flex-direction:column;width:100%;padding:5px 80px 10px 10px;list-style:none;display:flex;position:relative}.biscuitman summary b{margin-bottom:3px}.biscuitman summary b:after{content:"";border:5px solid #777;border-color:#0000 #777 #777 #0000;border-radius:2px;width:1em;height:1em;margin:-2px 0 0 -4px;display:block;transform:rotate(-45deg)scale(.3)}.biscuitman summary p{color:var(--t);font-size:14px}.biscuitman summary>*{display:inline-flex}.biscuitman summary::marker{display:none}.biscuitman summary::-webkit-details-marker{display:none}.biscuitman dl{background:#eee;margin:10px;padding:10px;display:flex}.biscuitman dl dt,.biscuitman dl dd{color:var(--t);font-size:13px}.biscuitman dl dt{min-width:120px;padding-right:30px;font-weight:700}.biscuitman label{--height:1.2em;--width:2.3em;--gap:2px;height:var(--height);width:var(--width);border-radius:var(--height);background-color:#999;margin-top:-2px;display:block;position:absolute;top:50%;right:20px;transform:translateY(-50%);font-size:20px!important}.biscuitman label:before{content:"";background:var(--b);height:calc(var(--height) - calc(var(--gap)*2));width:calc(var(--height) - calc(var(--gap)*2));height:var(--height);width:var(--height);left:var(--gap);transform-origin:50%;border-radius:100%;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)scale(.8)}.biscuitman label:has(:checked){background-color:var(--c)}.biscuitman label:has(:checked):before{left:auto;right:0}.biscuitman label:has(:focus-visible){outline:auto highlight}.biscuitman label:has([disabled]:checked){opacity:.6}.biscuitman label input{opacity:0}`;d.documentElement.appendChild(c)})(document);
\ No newline at end of file
+/*! biscuitman.js 0.3.8 */((e,t,o,a,n)=>{let i;let s={key:"myconsent",global:"Consent",force:!1,enableMore:!0,sections:["essential"],title:"Your privacy matters",message:"We use cookies",settings:"Settings",reject:"Reject All",accept:"Accept All",save:"Save My Settings",settingsTitle:"My Consent Settings",info:"",more:"(Show more)",noCookies:"No cookies to display",acceptNonEU:!1,...t.biscuitman},c=e.createElement("div"),l=e=>c.classList.toggle("bm-hide",!e),r=()=>{let{consentTime:e,...t}=$();for(let[n,i]of(e||(t=o.fromEntries(s.sections.slice(1).map(e=>[e,!1]))),o.entries(t)))a.classList.toggle(`bm-${n}`,i),a.classList.toggle(`bm-no-${n}`,!i)};function d(e){let t=e.target.dataset.id;switch(b("button",{id:t}),t){case"accept":k(!0);break;case"close":i.close();break;case"settings":u();break;case"save":k();break;case"reject":k(!1)}}function m(){b("close")}function p(e){s.force&&e.preventDefault()}function u(){b("open"),i.showModal()}function b(t,o){let a=`${n}:${t}`,i={...void 0!==o&&o,time:+new Date};e.dispatchEvent(new CustomEvent(a,i)),console.debug(a,i)}let f=e=>{t[s.global]=e,r()},$=()=>t[s.global];function g(){try{return JSON.parse(localStorage.getItem(s.key))}catch(e){return console.error(e),localStorage.removeItem(s.key),{}}}function v(){let t=o.fromEntries(o.entries(localStorage)),a=o.fromEntries(e.cookie.split("; ").map(e=>e.split("="))),{consentTime:n,...i}=g()||s.sections.slice(1).reduce((e,t)=>(e[t]=!1,{consentTime:void 0,...e}),{});for(let[n,c]of o.entries(i)){if(c)continue;let i=o.keys(s[`${n}Cookies`]||{});for(let n of(i.filter(e=>e.endsWith("*")).map(e=>{o.keys({...a,...t}).map(t=>{t.startsWith(e.slice(0,-1))&&i.push(t)})}),i)){if(a[n]){let t=`${n}=;expires=Thu, 01 Jan 1970 00:00:01 UTC;path=/;`;e.cookie=t,e.cookie=`${t}domain=${location.hostname};`,e.cookie=`${t}domain=.${location.hostname};`,b("delete",{cookie:n})}t[n]&&(localStorage.removeItem(n),b("delete",{localStorage:n}))}}}function k(e){let t=void 0===e,o={consentTime:+new Date};s.sections.forEach(a=>{if("essential"===a)return!1;let n=c.querySelector(`[data-s=${a}]`),i=t?n.checked:e;o[a]=i,t||(n.checked=e)}),f(o),localStorage.setItem(s.key,JSON.stringify(o)),b("save",{data:o}),v(),h(),i.close(),l(!1)}function h(){e.querySelectorAll("script[data-consent]").forEach(t=>{if(!$()[t.dataset.consent])return!1;let o=e.createElement("script");for(let{name:e,value:a}of t.attributes)e.startsWith("data-")||"type"===e||o.setAttribute(e,a);o.setAttribute("type",t.dataset.type||"text/javascript"),t.src||(o.textContent=t.textContent),t.parentNode.replaceChild(o,t),b("inject",{el:t,...t.id&&{id:t.id}}),t.src&&""!==t.textContent.trim()&&o.addEventListener("load",()=>{let a=e.createElement("script");a.textContent=t.textContent,t.id&&(a.id=t.id+"-after"),o.insertAdjacentElement("afterend",a),b("inject",{el:a,parent:t,...a.id&&{id:a.id}})})})}f(g()||{});let y=Intl.DateTimeFormat().resolvedOptions().timeZone,E=/^(GMT|UTC)$/.test(y)||/(Europe|BST|CEST|CET|EET|IST|WEST|WET|GMT-1|GMT-2|UTC+1|UTC+2|UTC+3)/.test(y);s.acceptNonEU&&!E&&(k(!0),l(!1)),function(){c.classList.add(n),c.style="position:fixed;background:#fff;bottom:0",c.innerHTML=`${s.title}${s.message}
`.replaceAll("{link}",`${s.linkText}`),c.querySelectorAll("button").forEach(e=>e.addEventListener("click",d)),(i=c.querySelector("dialog")).addEventListener("close",m),i.addEventListener("cancel",p);let t=c.querySelector(".more");t&&t.addEventListener("click",t.remove),e.body.appendChild(c)}(),v(),t[s.global].consentTime?(l(!1),h()):s.force&&u(),t.bmInvalidate=()=>{b("invalidate",{data:$()}),k(!1),f({}),localStorage.removeItem(s.key),l(!0)},t.bmUpdate=()=>{b("update",{data:$()}),u()}})(document,window,Object,document.documentElement,"biscuitman");;((d)=>{let c=d.createElement('style');c.textContent=`.biscuitman{--t:#444;--b:#fff;--c:#105d89;background:var(--b);box-sizing:border-box;width:100%;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;box-shadow:0 -2px 10px #00000029}.biscuitman *{box-sizing:border-box;margin:0;padding:0;font-size:16px;line-height:1.4em}.biscuitman:has([open]){transform:translateY(100%)}.biscuitman.bm-hide{padding:0}.biscuitman.bm-hide article{display:none}.biscuitman article{position:relative}@media (width>=770px){.biscuitman article{padding-right:calc(max(300px,30vw) + 20px)}.biscuitman article nav{width:30vw;min-width:300px;position:absolute;bottom:50%;right:0;transform:translateY(50%)}}.biscuitman article p{color:var(--t);margin:10px 0;font-size:13px}@media (width>=575px){.biscuitman article p{font-size:14px}}.biscuitman button{background:var(--b);border:2px solid var(--c);color:var(--c);cursor:pointer;border-radius:3px;margin-top:10px;padding:.8em;font-size:13px;line-height:1em}.biscuitman button[data-id=accept]{background:var(--c);color:var(--b)!important}.biscuitman button[data-id=close]{color:#000;opacity:.6;-webkit-user-select:none;user-select:none;z-index:2;background:0 0;border:none;outline:none;padding:10px;font-size:24px;line-height:1em;position:absolute;top:0;right:10px}.biscuitman button[disabled]{display:none}.biscuitman button:hover{opacity:.8}@media (width>=576px){.biscuitman nav{flex-direction:row-reverse;gap:10px;width:100%;display:flex}.biscuitman nav button{flex-grow:1;margin-bottom:0}}@media (width<=575px){.biscuitman nav{flex-direction:column;flex-grow:1;display:flex}}.biscuitman dialog{border:0;width:100%;max-width:100%;height:100%;max-height:100%}@media (width>=576px){.biscuitman dialog{border-radius:10px;width:90vw;max-width:860px;max-height:80vh;margin:auto;box-shadow:0 0 8px #0000004d}}@media (width>=576px) and (height>=1134px){.biscuitman dialog{height:890px}}.biscuitman dialog nav{justify-self:flex-end;position:relative}.biscuitman .bm-dialog{flex-direction:column;height:100%;padding:20px;display:flex}.biscuitman .bm-dialog b{position:relative}.biscuitman .bm-dialog>b:after{content:"";background:linear-gradient(180deg,var(--b)20%,transparent);pointer-events:none;z-index:1;width:100%;height:25px;margin-bottom:-24px;position:absolute;bottom:0;left:0}.biscuitman .bm-dialog nav:after{content:"";background:linear-gradient(0deg,var(--b)20%,transparent);pointer-events:none;width:100%;height:25px;position:absolute;top:-24px;left:0}.biscuitman .bm-sections{scrollbar-color:#ddd var(--b);flex-shrink:1;height:100%;padding:15px 0;position:relative;overflow-y:scroll}@media (width>=576px){.biscuitman .bm-sections{margin-right:-18px;padding-right:4px}}.biscuitman .bm-sections>p{padding-right:30px;line-height:18px}.biscuitman .bm-sections>p span{padding-bottom:5px;font-size:13px;display:block}@media (width>=576px){.biscuitman .bm-sections>p span{font-size:14px}}.biscuitman .bm-sections>p span:has(.more)~span{display:none}.biscuitman a{font-size:inherit;color:var(--c);cursor:pointer;text-decoration:none;display:inline-block}.biscuitman a:hover{text-decoration:underline}.biscuitman section{margin-bottom:10px;position:relative}.biscuitman section:first-of-type{margin-top:10px}.biscuitman details{border:1px solid #ccc;border-radius:5px;padding:10px;list-style:none;box-shadow:0 2px 4px #0000001a}.biscuitman details[open] summary b:after{margin:-3px 0 0 -2px;transform:rotate(45deg)scale(.3)}.biscuitman summary{cursor:pointer;flex-direction:column;width:100%;padding:5px 80px 10px 10px;list-style:none;display:flex;position:relative}.biscuitman summary b{margin-bottom:3px}.biscuitman summary b:after{content:"";border:5px solid #777;border-color:#0000 #777 #777 #0000;border-radius:2px;width:1em;height:1em;margin:-2px 0 0 -4px;display:block;transform:rotate(-45deg)scale(.3)}.biscuitman summary p{color:var(--t);font-size:14px}.biscuitman summary>*{display:inline-flex}.biscuitman summary::marker{display:none}.biscuitman summary::-webkit-details-marker{display:none}.biscuitman dl{background:#eee;margin:10px;padding:10px;display:flex}.biscuitman dl dt,.biscuitman dl dd{color:var(--t);font-size:13px}.biscuitman dl dt{min-width:120px;padding-right:30px;font-weight:700}.biscuitman label{--height:1.2em;--width:2.3em;--gap:2px;height:var(--height);width:var(--width);border-radius:var(--height);background-color:#999;margin-top:-2px;display:block;position:absolute;top:50%;right:20px;transform:translateY(-50%);font-size:20px!important}.biscuitman label:before{content:"";background:var(--b);height:calc(var(--height) - calc(var(--gap)*2));width:calc(var(--height) - calc(var(--gap)*2));height:var(--height);width:var(--height);left:var(--gap);transform-origin:50%;border-radius:100%;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)scale(.8)}.biscuitman label:has(:checked){background-color:var(--c)}.biscuitman label:has(:checked):before{left:auto;right:0}.biscuitman label:has(:focus-visible){outline:auto highlight}.biscuitman label:has([disabled]:checked){opacity:.6}.biscuitman label input{opacity:0}`;d.documentElement.appendChild(c)})(document);
\ No newline at end of file
diff --git a/index.html b/index.html
index 800d4c2..11f7537 100644
--- a/index.html
+++ b/index.html
@@ -232,12 +232,20 @@
Favourite Biscuit Selector
History of Biscuits