-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
1 lines (1 loc) · 4.39 KB
/
index.js
File metadata and controls
1 lines (1 loc) · 4.39 KB
1
"use strict";(async function(e,t){"serviceWorker"in t&&e.addEventListener("load",async()=>{const e=await t.serviceWorker.register("sw.js");e.onupdatefound=()=>{const a=e.installing;a.onstatechange=()=>{switch(a.state){case"installed":t.serviceWorker.controller?console.log("New or updated content is available."):console.info("Content is now available offline!");break;case"redundant":throw new Error("The installing service worker became redundant.")}}}})})(window,navigator).catch(e=>console.error(e.message)),async function(e,t,a){const n=(...e)=>e.map(e=>t.createElement(e)),s=(e,t)=>c.getPropertyValue(e)||t,i=(e,t,a)=>{e.forEach(n=>{a(n)&&(n.closest(t).className="paged selected"),n.onclick=a=>{e.map(e=>e.closest(t)).filter(e=>e).forEach(e=>e.className=""),a.target.closest(t).className="paged selected"}})},o="Back to page top",r=["undisplayed","transparent","sticky","horizontal"].reduce((e,t)=>Object.assign(e,{[t]:t}),{}),[d]=n("div");d.classList.add("spinner");const c=getComputedStyle(t.documentElement),[l,p,h]=((...e)=>e.map(e=>t.querySelector(e)))("header","main","#notes"),[u,g]=((...e)=>e.map(e=>[...t.querySelectorAll(e)]))("label.paged","main input.paged[type='radio']"),[m,b]=["--color-primary-tint-3","--color-secondary-tint-1"],[f,y]=["#000","#FFF"],L=new a({element:t.getElementById("qr").children[0],value:"https://dhsrocha.github.io",foreground:s(m,f),background:s(b,y),mime:"image/svg+xml",level:"H"});e.matchMedia("(prefers-color-scheme: dark)").addListener(()=>{L.foreground=s(m,f),L.background=s(b,y)});const w=-1!==["#about","#work","#notes"].indexOf(e.location.hash)?g.find(t=>t.id.slice(9)===e.location.hash.slice(1)):t.querySelector("#nav-tab__about");w.checked=!0,i(u,"li",e=>e.getAttribute("for")===w.id);const C=()=>{h.appendChild(d);(async()=>{const e=await fetch("https://api.github.com/repos/dhsrocha/dhsrocha.github.io/issues?state=closed&labels=blog-post&assignee=dhsrocha"),a=await e.json(),s=t.getElementById("articles"),o=a.map(e=>{const t="article-"+e.number,[a,s,i,o,d]=n("div","input","label","article","section"),[c,l,p]=n("header","h3","em"),[h,u,g]=n("footer","span","time");s.id="article-tab__"+e.number,s.classList.add(r.undisplayed,"paged"),s.setAttribute("type","radio"),s.setAttribute("name","article-tabs"),i.setAttribute("for",s.id),o.id=t,l.innerHTML=e.title,p.classList.add("icons","icon-arrow-right");[c,d].forEach(e=>e.onclick=()=>s.checked=!s.checked),d.innerHTML=e.body,u.innerHTML="Last updated at ";const m=new Date(e.updated_at);return g.innerHTML=m.toLocaleDateString()+" "+m.toLocaleTimeString(),i.appendChild(o),h.appendChild(u),u.appendChild(g),[l,p].forEach(e=>c.appendChild(e)),[c,d,h].forEach(e=>o.appendChild(e)),[s,i].forEach(e=>a.appendChild(e)),a}),d=[];for(let e=0;e<o.length;e+=3)e+3<o.length?d.push(o.slice(e,e+3)):d.push(o.slice(e,o.length));const c=d.map(e=>{const a=t.createElement("section");return e.forEach(e=>a.appendChild(e)),a}).map((e,t)=>{const[a,s]=n("div","input");return s.classList.add("paged"),s.setAttribute("type","radio"),s.setAttribute("name","page-tabs"),s.id="page-tab__"+t,0===t&&(s.checked=!0),[s,e].forEach(e=>a.appendChild(e)),a}),l=t.createElement("ul");l.classList.add(r.horizontal);const p=[...Array(c.length).keys()].map(e=>{const[t,a,s]=n("li","label","span");return a.setAttribute("for","page-tab__"+e),s.innerHTML=e+1,a.appendChild(s),t.appendChild(a),l.appendChild(t),t});i(p,"li",e=>"page-tab__0"===e.firstChild.getAttribute("for")),c.forEach(e=>s.appendChild(e)),s.appendChild(l),s.style.opacity=1})().then(()=>h.removeChild(d))};"#notes"===e.location.hash?C():t.getElementById("nav-tab__notes").addEventListener("change",C,{once:!0});const[v,k,E]=n("div","h3","p");k.innerHTML="I would like to hear you",E.innerHTML="Reach me if you have an idea that you want to get it started. I would be pleased to help you with something.",v.appendChild(k),v.appendChild(E),p.appendChild(v);const[A,_,T]=n("a","button","em");A.id="to-top",A.classList.add(r.transparent),A.setAttribute("href","#top"),A.setAttribute("aria-label",o),A.setAttribute("title",o),T.classList.add("icons","icon-arrow-up"),_.classList.add(r.undisplayed),_.innerHTML=o,[T,_].forEach(e=>A.appendChild(e)),t.body.appendChild(A),t.onscroll=()=>{e.pageYOffset>0&&l.classList.add(r.sticky),e.pageYOffset<10&&l.classList.remove(r.sticky),e.pageYOffset>150&&A.classList.remove(r.transparent),e.pageYOffset<=160&&A.classList.add(r.transparent)},e.location.hash="",e.onload=()=>t.body.style.opacity=1}(window,document,QRious);