-
Notifications
You must be signed in to change notification settings - Fork 0
/
scribbler.js
65 lines (50 loc) · 2.04 KB
/
scribbler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// utils
const get = (selector, scope = document) => scope.querySelector(selector);
const getAll = (selector, scope = document) => scope.querySelectorAll(selector);
const typeItOut = (txt, selector, i = 0, scope = document, speed = 25) => {
if (i < txt.length) {
scope.getElementsByClassName(selector)[0].innerHTML += txt[i];
i++;
setTimeout(() => typeItOut(txt, selector, i, scope, speed), speed);
}
};
// typewriter animation
if (document.getElementsByClassName("demo").length > 0) {
let txt = `khairalanam
[Entry mode; press Ctrl+D to save and quit; press Ctrl+C to quit without saving]
### about me
- i am a creative web developer and a designer
- i like exploring many things in tech and sharing my learnings with the world!
- email me at: [email protected]
- i like tea ☕`;
setTimeout(() => typeItOut(txt), 1000);
}
// tabs section
window.addEventListener("load", () => {
let tabContainers = getAll(".tab__container");
for (let i = 0; i < tabContainers.length; i++)
get(".tab__menu", tabContainers[i]).addEventListener("click", tabClick);
function tabClick(event) {
const scope = event.currentTarget.parentNode;
let clickedTab = event.target;
let tabs = getAll(".tab", scope);
let panes = getAll(".tab__pane", scope);
let activePane = get(`.${clickedTab.getAttribute("data-tab")}`, scope);
for (let i = 0; i < tabs.length; i++) tabs[i].classList.remove("active");
for (let i = 0; i < panes.length; i++) panes[i].classList.remove("active");
clickedTab.classList.add("active");
activePane.classList.add("active");
}
});
// views counter
const counter = document.querySelector(".viewer__count");
async function updateCounter() {
let response = await fetch(
"https://q2vnuqsqtna42u7thtshlwmcsm0ihgtv.lambda-url.eu-north-1.on.aws/"
);
let views = await response.json();
if (counter) counter.textContent = `Views Count: ${views}`;
return views;
}
updateCounter();
module.exports = { get, getAll, typeItOut };