(function() { const doc = document.documentElement; // from swift theme: sandwich // ****** function modifyClass(el, targetClass) { if (isObj(el) && targetClass) { const elClass = el.classList; elClass.contains(targetClass) ? elClass.remove(targetClass) : elClass.add(targetClass); } } function containsClass(el, targetClass) { if (isObj(el) && targetClass && el !== document ) { return el.classList.contains(targetClass) ? true : false; } } function createEl(element = 'div') { return document.createElement(element); } function isObj(obj) { return (obj && typeof obj === 'object' && obj !== null) ? true : false; } function elem(selector, parent = document){ let elem = parent.querySelector(selector); return elem != false ? elem : false; } function elems(selector, parent = document) { let elems = parent.querySelectorAll(selector); return elems.length ? elems : false; } function pushClass(el, targetClass) { if (isObj(el) && targetClass) { const elClass = el.classList; elClass.contains(targetClass) ? false : elClass.add(targetClass); } } const copyToClipboard = str => { let copy, selection, selected; copy = createEl('textarea'); copy.value = str; copy.setAttribute('readonly', ''); copy.style.position = 'absolute'; copy.style.left = '-9999px'; selection = document.getSelection(); doc.appendChild(copy); // check if there is any selected content selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false; copy.select(); document.execCommand('copy'); doc.removeChild(copy); if (selected) { // if a selection existed before copying selection.removeAllRanges(); // unselect existing selection selection.addRange(selected); // restore the original selection } } (function copyLinkToShare() { let copy, copied, excerpt, isCopyIcon, isInExcerpt, link, postCopy, postLink, target; copy = 'copy'; copied = 'copy_done'; excerpt = 'excerpt'; postCopy = 'post_copy'; postLink = 'post_card'; doc.addEventListener('click', function(event) { target = event.target; isCopyIcon = containsClass(target, copy); let isWithinCopyIcon = target.closest(`.${copy}`); if (isCopyIcon || isWithinCopyIcon) { let icon = isCopyIcon ? isCopyIcon : isWithinCopyIcon; isInExcerpt = containsClass(icon, postCopy); if (isInExcerpt) { link = target.closest(`.${excerpt}`).previousElementSibling; link = containsClass(link, postLink)? elemAttribute(link, 'href') : false; } else { link = window.location.href; } if(link) { copyToClipboard(link); pushClass(icon, copied); } } }); })(); (function() { let bar = 'nav_bar-wrap'; let navBar = elem(`.${bar}`); let nav = elem('.nav-body'); let open = 'nav-open'; let exit = 'nav-exit'; let drop = 'nav-drop'; let pop = 'nav-pop'; let navDrop = elem(`.${drop}`); function toggleMenu(){ let menuOpen, menuPulled, status; modifyClass(navDrop, pop); modifyClass(navBar, 'hidden'); menuOpen = containsClass(nav, open); menuPulled = containsClass(nav, exit); status = menuOpen || menuPulled ? true : false; status ? modifyClass(nav, exit) : modifyClass(nav, open); status ? modifyClass(nav, open) : modifyClass(nav, exit); } navBar.addEventListener('click', function() { toggleMenu(); }); elem('.nav-close').addEventListener('click', function() { toggleMenu(); }); elem('.nav-drop').addEventListener('click', function(e) { e.target === this ? toggleMenu() : false; }); })(); (function postsPager(){ const pager = elem('.pagination'); if (pager) { pushClass(pager, 'pager'); const pagerItems = elems('li', pager); const pagerLinks = Array.from(pagerItems).map(function(item){ return item.firstElementChild; }); pagerLinks.forEach(function(link){ pushClass(link, 'pager_link') }); pagerItems.forEach(function(item){ pushClass(item, 'pager_item') }); } })(); // ****** (function() { var fbposts = document.querySelector('#fbposts'); function whoops(error) { console.log(error); fbposts.innerHTML = "
${p.content}...