From a2c7211b6764d7df59b4f2f8079946a8b3ccbcdb Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 4 Aug 2024 13:19:40 -0500 Subject: [PATCH] move shared js resources to cdn --- assets/js/kudos.js | 25 ------ assets/js/theme-song.js | 20 ----- assets/js/typo.js | 167 ----------------------------------- layouts/_default/single.html | 3 +- layouts/partials/aside.html | 3 +- layouts/partials/head.html | 3 +- 6 files changed, 3 insertions(+), 218 deletions(-) delete mode 100644 assets/js/kudos.js delete mode 100644 assets/js/theme-song.js delete mode 100644 assets/js/typo.js diff --git a/assets/js/kudos.js b/assets/js/kudos.js deleted file mode 100644 index 95ce547..0000000 --- a/assets/js/kudos.js +++ /dev/null @@ -1,25 +0,0 @@ -// manipulates the post upvote "kudos" button behavior - -window.onload = function() { - // get the button and text elements - const kudosButton = document.querySelector('.kudos-button'); - const kudosText = document.querySelector('.kudos-text'); - const emojiSpan = kudosButton.querySelector('.emoji'); - - kudosButton.addEventListener('click', function(event) { - // send the event to Cabin - cabin.event('kudos') - // disable the button - kudosButton.disabled = true; - kudosButton.classList.add('clicked'); - // change the displayed text - kudosText.textContent = 'Thanks!'; - kudosText.classList.add('thanks'); - // spin the emoji - emojiSpan.style.transform = 'rotate(360deg)'; - // change the emoji to celebrate - setTimeout(function() { - emojiSpan.textContent = '🎉'; - }, 150); // half of the css transition time for a smooth mid-rotation change - }); -} diff --git a/assets/js/theme-song.js b/assets/js/theme-song.js deleted file mode 100644 index ae1c2a4..0000000 --- a/assets/js/theme-song.js +++ /dev/null @@ -1,20 +0,0 @@ -// retreives the latest link from a musicthread thread and displays it on the page -const themeSongScript = document.currentScript -const urlParams = new URLSearchParams(themeSongScript.src.split('.js')[1]) -const params = Object.fromEntries(urlParams.entries()) - -if (params.id) -{ - const musicthread = `https://musicthread.app/api/v0/thread/${params.id}` - fetch(musicthread) - .then((response) => response.json()) - .then((thread) => { - let themeSong = thread.links[0] - console.log(themeSong) - themeSongContainer = document.createElement('div') - themeSongContainer.className = 'theme-song' - themeSongContainer.style - themeSongContainer.innerHTML = `
${themeSong.title}
${themeSong.artist}` - themeSongScript.parentNode.insertBefore(themeSongContainer, themeSongScript) - }) -} \ No newline at end of file diff --git a/assets/js/typo.js b/assets/js/typo.js deleted file mode 100644 index 7fc1ccf..0000000 --- a/assets/js/typo.js +++ /dev/null @@ -1,167 +0,0 @@ -/* - -Typo, a more natural web typing thing - -https://neatnik.net/typo -https://github.com/neatnik/typo - -Copyright (c) 2021 Neatnik LLC - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - -function num_between(min, max) { - return Math.floor(Math.random() * (max- min + 1) + min); -} - -function chance(val) { - if(num_between(0, 100) < val) return true; - else return false; -} - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -var typos = { - q:['w','a'], - w:['q','r','s'], - e:['w','d','r'], - r:['e','f','t'], - t:['r','g','y'], - y:['t','h','u'], - u:['y','j','i'], - i:['u','k','o'], - o:['i','l','p'], - p:['o',';','['], - a:['q','s','z'], - s:['w','a','x','d'], - d:['e','s','c','f'], - f:['r','d','v','g'], - g:['t','f','b','h'], - h:['y','g','n','j'], - j:['u','h','m','k'], - k:['i','j',',','l'], - l:['o','k','.',';'], - z:['a','x'], - x:['z','s','c'], - c:['x','d','v'], - v:['c','f','b'], - b:['v','g','n'], - n:['b','h','m'], - m:['n','j',','], -} - -async function typo(element, text) { - var buffer = ''; - var typo_active = false; - var typing_typos = (element.dataset.typoChance) ? element.dataset.typoChance : 10; - var typing_speed = (element.dataset.typingDelay) ? element.dataset.typingDelay : 50; - var typing_jitter = (element.dataset.typingJitter) ? element.dataset.typingJitter : 15; - - for (var i = 0; i < text.length; i++) { - // Get the letter that we're supposed to type - letter = text.charAt(i); - - // Trigger a typo - if(chance(typing_typos) && typo_active === false && i > 1 && i < text.length - 3) { - if(typeof typos[letter] !== 'undefined') { - // Swap the letter with a random typo - typo = typos[letter][Math.floor(Math.random() * typos[letter].length)]; - - // Append the letter to the buffer - buffer = buffer + typo; - - // Write the buffer - element.innerHTML = buffer; - - typo_active = true; - var seed = num_between(2,5); // Reduced max seed to ensure correction - realization_delay = seed; - realization_delay_counter = seed; - } - } - - // Append the letter to the buffer - buffer = buffer + letter; - - // Write the buffer - element.innerHTML = buffer; - - // Typical typing speed - var speed_lower = parseFloat(typing_speed) - parseInt(typing_jitter); - var speed_upper = parseFloat(typing_speed) + parseInt(typing_jitter); - - delay = num_between(speed_lower,speed_upper); - - // Chance of longer delay though - if(chance(5)) delay = num_between(100, 200); - await sleep(delay); - - if(typo_active) { - realization_delay_counter--; - - if(realization_delay_counter == 0) { - for (var k = 0; k < seed+1; k++) { - // Pause at realization of typo - await sleep(typing_jitter); - - // Rewind the buffer! - buffer = buffer.substring(0, buffer.length - 1); - - // Write rewound buffer - element.innerHTML = buffer; - - // Brief pause before continuing - await sleep(30); - } - - typo_active = false; - - // Add the letters back - i = i - seed; - await sleep(100); - } - } - } - - // Ensure any remaining typo is corrected - if(typo_active) { - await sleep(typing_jitter * 2); - for (var k = 0; k < seed+1; k++) { - buffer = buffer.substring(0, buffer.length - 1); - element.innerHTML = buffer; - await sleep(30); - } - for (var k = 0; k < seed; k++) { - buffer += text.charAt(text.length - seed + k); - element.innerHTML = buffer; - await sleep(typing_speed); - } - } - - return new Promise(resolve => setTimeout(resolve, 1)); -} - -document.addEventListener('DOMContentLoaded', function() { - var element = document.getElementById('tagline'); - var text = element.innerHTML; - typo(element, text); -}); \ No newline at end of file diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 1d7b9fb..62d73c2 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -47,8 +47,7 @@ Enjoyed this? - {{ $kudos := resources.Get "js/kudos.js" | minify }} - + 📧 Reply by email {{- end }} diff --git a/layouts/partials/aside.html b/layouts/partials/aside.html index 334cd32..a3273f1 100644 --- a/layouts/partials/aside.html +++ b/layouts/partials/aside.html @@ -59,7 +59,6 @@ {{ with .Site.Params.musicThreadId }}

current theme song

-{{ $jsThemeSong := resources.Get "js/theme-song.js" | minify }} - + {{ end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index d6ed8bb..f8977c1 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -49,5 +49,4 @@ {{ end }} -{{ $jsTypo := resources.Get "js/typo.js" | minify }} - \ No newline at end of file + \ No newline at end of file