2023-02-16 12:29:17 +01:00
|
|
|
export function rand(length) {
|
|
|
|
let result = '';
|
|
|
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
const charactersLength = characters.length;
|
|
|
|
let counter = 0;
|
|
|
|
while (counter < length) {
|
|
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
|
|
counter += 1;
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function animateText (ev) {
|
|
|
|
if (!ev.target.getAttribute('data-text')) {
|
|
|
|
ev.target.setAttribute('data-text', ev.target.innerHTML)
|
|
|
|
}
|
|
|
|
if (ev.target.getAttribute('data-animate') === "1") {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ev.target.setAttribute('data-animate', "1")
|
|
|
|
const orig = ev.target.getAttribute('data-text')
|
|
|
|
const steps = orig.length
|
|
|
|
|
2023-02-16 12:58:21 +01:00
|
|
|
const genRand = (pos = 0, len = null) => orig.substring(pos, len).split(' ').map(x => rand(x.length)).join(' ')
|
|
|
|
const random = genRand(0, orig.length)
|
|
|
|
|
2023-02-16 12:29:17 +01:00
|
|
|
ev.target.innerHTML = random
|
|
|
|
|
|
|
|
for (let i = 0; i <= steps; i++) {
|
|
|
|
setTimeout(() => {
|
2023-02-16 12:58:21 +01:00
|
|
|
ev.target.innerHTML = orig.substring(0, i) + genRand(i, orig.length)
|
|
|
|
console.log(ev.target.innerHTML)
|
2023-02-16 12:29:17 +01:00
|
|
|
|
|
|
|
if (i === steps) {
|
|
|
|
ev.target.setAttribute('data-animate', "0")
|
|
|
|
}
|
|
|
|
}, 50*i)
|
|
|
|
}
|
|
|
|
}
|