From f54df35767dcda9bc4853decff86d57323593685 Mon Sep 17 00:00:00 2001
From: Geoffrey Garrett <g.h.garrett13@gmail.com>
Date: Sun, 03 Jul 2022 18:42:35 +0000
Subject: [PATCH] Copy to clipboard feature for code block (#152)

---
 layouts/partials/head.html |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index e3eebbf..7dfbd50 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -54,6 +54,13 @@
   <script src="{{$codeTitle.Permalink}}"></script>
   {{end}}
 
+  {{ if $.Site.Data.config.enableCodeBlockCopy }}
+  {{ $clipboard := resources.Get "js/clipboard.js" | resources.Fingerprint "md5" | resources.Minify }}
+  {{ if (findRE "<pre" .Content 1) }}
+    <script src="{{$clipboard.Permalink}}"></script>
+  {{ end }}
+  {{ end }}
+
   <!--  Preload page vars  -->
   {{$linkIndex := resources.Get "indices/linkIndex.json" | resources.Fingerprint
   "md5" | resources.Minify | }} {{$contentIndex := resources.Get
@@ -85,6 +92,10 @@
       const pathWindow = window.location.pathname;
       const isHome = pathBase == pathWindow;
 
+      {{if $.Site.Data.config.enableCodeBlockCopy -}}
+      addCopyButtons();
+      {{ end }}
+
       {{if $.Site.Data.config.enableSPA -}}
       addTitleToCodeBlocks();
       {{ end }}
@@ -118,12 +129,12 @@
 
     const init = (doc = document) => {
       // NOTE: everything within this callback will be executed for initial page navigation. This is a good place to put JavaScript that only replaces DOM nodes.
+      {{if $.Site.Data.config.enableCodeBlockCopy -}}
+      addCopyButtons();
+      {{ end }}
+
       {{if $.Site.Data.config.enableCodeBlockTitle -}}
-      {{if $.Site.Data.config.enableSPA -}}
       addTitleToCodeBlocks();
-      {{ else }}
-      window.addEventListener("DOMContentLoaded", addTitleToCodeBlocks);
-      {{- end -}}
       {{- end -}}
       {{if $.Site.Data.config.enableLatex}}
       renderMathInElement(doc.body, {

--
Gitblit v1.10.0