~ruther/blog

ref: 1e4dd2e3a3a3029087f7d501e0715d4756ff8a78 blog/themes/poison/assets/js/codeblock.js -rw-r--r-- 1013 bytes
1e4dd2e3 — Rutherther chore: add rsync 9 months ago
                                                                                
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
document.addEventListener("DOMContentLoaded", function() {

  // Get code blocks
  const codeblocks = document.querySelectorAll("pre code");

  // Iterate over each to perform modifications
  codeblocks.forEach((codeblock) => {
    // Create copy button and container element
    const copyButton = document.createElement("button");
    copyButton.className = "copy-button";
    const container = document.createElement("div");
    container.className = "code-container";
    
    // Copy clicked closure
    copyButton.addEventListener("click", (e) => {
      e.target.className = "copy-success";
      setTimeout(() => {
        e.target.className = "copy-button";
      }, 1000);
      const code = codeblock.textContent;
      navigator.clipboard.writeText(code);
    });

    // Wrap the codeblock with the container
    codeblock.parentNode.insertBefore(container, codeblock);
    container.appendChild(codeblock);
    // Add the copy button to the container
    container.appendChild(copyButton);
  })
});