-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
99 lines (87 loc) · 2.64 KB
/
script.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
function animateLogo() {
const nav = document.querySelector("nav");
const docTitle = document.querySelector("#doc-title");
nav.onmouseenter = (e) => docTitle.classList.add("nav-hover");
nav.onmouseout = (e) => {
const mouseOutNav = !nav.contains(e.relatedTarget);
if (mouseOutNav) {
docTitle.classList.remove("nav-hover");
}
};
}
function addClipboardBtns() {
const containerCodeArr = Array.from(
document.querySelectorAll(".container-code")
);
containerCodeArr.forEach((containerCode) => {
containerCode.innerHTML += `<button class="clipboard-btn" title="Copy to clipboard">Copy</button>`;
const clipboardBtn = containerCode.children[1];
const preTagContent = containerCode.children[0].innerText;
addClipboardEvent(clipboardBtn, preTagContent);
});
}
function addClipboardEvent(clipboardBtn, preTagContent) {
clipboardBtn.onclick = () => {
navigator.clipboard.writeText(preTagContent);
clipboardBtn.innerText = "Copied!";
setTimeout(() => {
clipboardBtn.innerText = "Copy";
}, 3000);
};
}
function setScrollEvents() {
const scrollToTopBtn = document.querySelector("#scroll-to-top-btn");
scrollToTopBtn.addEventListener("click", () => {
window.scrollTo({
top: 0,
behavior: "smooth",
});
});
window.addEventListener("scroll", () => {
if (window.scrollY > 800) {
scrollToTopBtn.style.display = "block";
} else {
scrollToTopBtn.style.display = "none";
}
});
}
function addToggleThemeEvent() {
const toggleThemeBtn = document.querySelector("#toggle-theme-btn");
let darkMode = localStorage.getItem("darkMode");
const enableDarkMode = () => {
document.body.classList.add("dark-mode");
toggleThemeBtn.classList.add("light-mode-icon");
localStorage.setItem("darkMode", "enabled");
};
const disableDarkMode = () => {
document.body.classList.remove("dark-mode");
toggleThemeBtn.classList.remove("light-mode-icon");
toggleThemeBtn.style.content = "dark_mode";
localStorage.setItem("darkMode", null);
};
// Check local storage when page is loaded
if (darkMode === "enabled") {
enableDarkMode();
}
toggleThemeBtn.addEventListener("click", () => {
// Update local storage variable before
darkMode = localStorage.getItem("darkMode");
if (darkMode !== "enabled") {
enableDarkMode();
} else {
disableDarkMode();
}
});
}
function main() {
setScrollEvents();
addClipboardBtns();
addToggleThemeEvent();
const isMobileOrTouch =
/Android|iPhone|Tablet|iPhone/i.test(navigator.userAgent) ||
navigator.maxTouchPoints > 0;
if (!isMobileOrTouch) {
animateLogo();
}
}
main();