blob: 9e00c793956d079deb65eb60afb51313ae9447d3 (
plain)
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
|
const changeIcon = (copyDiv, className) => {
copyDiv.classList.add(className);
setTimeout(() => copyDiv.classList.remove(className), 2500);
};
const copyCodeAndChangeIcon = async (copyDiv, block) => {
const code = block.querySelector('table') ? getTableCode(block) : getNonTableCode(block);
try {
await navigator.clipboard.writeText(code);
changeIcon(copyDiv, "yes");
} catch (error) {
changeIcon(copyDiv, "err");
}
};
const getNonTableCode = (block) => {
return [...block.querySelectorAll('code')]
.map(code => code.textContent)
.join('');
};
const getTableCode = (block) => {
return [...block.querySelectorAll('tr')]
.map(row => row.querySelector('td:last-child')?.innerText ?? '')
.join('');
};
document.querySelectorAll("pre").forEach((block) => {
const copyDiv = document.createElement("div");
copyDiv.className = "cc svgs svgh copy";
copyDiv.innerHTML = " ";
block.prepend(copyDiv);
copyDiv.addEventListener("click", () => copyCodeAndChangeIcon(copyDiv, block));;
});
|