From 614a6222a1638c159d2ac9c005be5b2ddec78dd2 Mon Sep 17 00:00:00 2001
From: Adam Brangenberg <adambrangenberg@proton.me>
Date: Thu, 29 Dec 2022 15:43:41 +0000
Subject: [PATCH] refactor: General performance/style improvements (#262)

---
 assets/js/clipboard.js |   57 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/assets/js/clipboard.js b/assets/js/clipboard.js
index cd928c1..10e02c6 100644
--- a/assets/js/clipboard.js
+++ b/assets/js/clipboard.js
@@ -8,33 +8,38 @@
     let els = document.getElementsByClassName("highlight");
     // for each highlight
     for (let i = 0; i < els.length; i++) {
-        if (els[i].getElementsByClassName("clipboard-button").length) continue;
+        try {
+            if (els[i].getElementsByClassName("clipboard-button").length) continue;
 
-        // find pre > code inside els[i]
-        let codeBlocks = els[i].getElementsByTagName("code");
+            // find pre > code inside els[i]
+            let codeBlocks = els[i].getElementsByTagName("code");
 
-         // line numbers are inside first code block
-        let lastCodeBlock = codeBlocks[codeBlocks.length - 1];
-        const button = document.createElement("button");
-        button.className = "clipboard-button";
-        button.type = "button";
-        button.innerHTML = svgCopy;
-        // remove every second newline from lastCodeBlock.innerText
-        button.addEventListener("click", () => {
-            navigator.clipboard.writeText(lastCodeBlock.innerText.replace(/\n\n/g, "\n")).then(
-                () => {
-                    button.blur();
-                    button.innerHTML = svgCheck;
-                    setTimeout(() => {
-                    	button.innerHTML = svgCopy
-                    	button.style.borderColor = ""
-                    }, 2000);
-                },
-                (error) => (button.innerHTML = "Error")
-            );
-        });
-        // find chroma inside els[i]
-        let chroma = els[i].getElementsByClassName("chroma")[0];
-        els[i].insertBefore(button, chroma);
+            // line numbers are inside first code block
+            let lastCodeBlock = codeBlocks[codeBlocks.length - 1];
+            const button = document.createElement("button");
+            button.className = "clipboard-button";
+            button.type = "button";
+            button.innerHTML = svgCopy;
+            button.ariaLabel = "opy the shown code";
+            // remove every second newline from lastCodeBlock.innerText
+            button.addEventListener("click", () => {
+                navigator.clipboard.writeText(lastCodeBlock.innerText.replace(/\n\n/g, "\n")).then(
+                  () => {
+                      button.blur();
+                      button.innerHTML = svgCheck;
+                      setTimeout(() => {
+                          button.innerHTML = svgCopy
+                          button.style.borderColor = ""
+                      }, 2000);
+                  },
+                  (error) => (button.innerHTML = "Error")
+                );
+            });
+            // find chroma inside els[i]
+            let chroma = els[i].getElementsByClassName("chroma")[0];
+            els[i].insertBefore(button, chroma);
+        } catch(error) {
+            console.debug(error);
+        }
     }
 }

--
Gitblit v1.10.0