mirror of
				https://github.com/Wonderfall/hugo-WonderMod.git
				synced 2025-10-31 03:45:24 +01:00 
			
		
		
		
	Remove inline JS
This commit is contained in:
		
							
								
								
									
										1651
									
								
								assets/js/highlight.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1651
									
								
								assets/js/highlight.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										112
									
								
								assets/js/papermod.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								assets/js/papermod.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | |||||||
|  | import * as params from '@params'; | ||||||
|  |  | ||||||
|  | function initializeMenu() { | ||||||
|  |     let menu = document.getElementById('menu') | ||||||
|  |     if (menu) { | ||||||
|  |         menu.scrollLeft = localStorage.getItem("menu-scroll-position"); | ||||||
|  |         menu.onscroll = function () { | ||||||
|  |             localStorage.setItem("menu-scroll-position", menu.scrollLeft); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     document.querySelectorAll('a[href^="#"]').forEach(anchor => { | ||||||
|  |         anchor.addEventListener("click", function (e) { | ||||||
|  |             e.preventDefault(); | ||||||
|  |             var id = this.getAttribute("href").substr(1); | ||||||
|  |             if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { | ||||||
|  |                 document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ | ||||||
|  |                     behavior: "smooth" | ||||||
|  |                 }); | ||||||
|  |             } else { | ||||||
|  |                 document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView(); | ||||||
|  |             } | ||||||
|  |             if (id === "top") { | ||||||
|  |                 history.replaceState(null, null, " "); | ||||||
|  |             } else { | ||||||
|  |                 history.pushState(null, null, `#${id}`); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function scrollToTop() { | ||||||
|  |     var mybutton = document.getElementById("top-link"); | ||||||
|  |     window.onscroll = function () { | ||||||
|  |         if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { | ||||||
|  |             mybutton.style.visibility = "visible"; | ||||||
|  |             mybutton.style.opacity = "1"; | ||||||
|  |         } else { | ||||||
|  |             mybutton.style.visibility = "hidden"; | ||||||
|  |             mybutton.style.opacity = "0"; | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function themeToggle() { | ||||||
|  |     document.getElementById("theme-toggle").addEventListener("click", () => { | ||||||
|  |         if (document.body.className.includes("dark")) { | ||||||
|  |             document.body.classList.remove('dark'); | ||||||
|  |             localStorage.setItem("pref-theme", 'light'); | ||||||
|  |         } else { | ||||||
|  |             document.body.classList.add('dark'); | ||||||
|  |             localStorage.setItem("pref-theme", 'dark'); | ||||||
|  |         } | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function showCodeCopyButtons() { | ||||||
|  |     document.querySelectorAll('pre > code').forEach((codeblock) => { | ||||||
|  |         const container = codeblock.parentNode.parentNode; | ||||||
|  |  | ||||||
|  |         const copybutton = document.createElement('button'); | ||||||
|  |         copybutton.classList.add('copy-code'); | ||||||
|  |         copybutton.innerHTML = 'copy'; | ||||||
|  |  | ||||||
|  |         function copyingDone() { | ||||||
|  |             copybutton.innerHTML = 'copied!'; | ||||||
|  |             setTimeout(() => { | ||||||
|  |                 copybutton.innerHTML = 'copy'; | ||||||
|  |             }, 2000); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         copybutton.addEventListener('click', (cb) => { | ||||||
|  |             if ('clipboard' in navigator) { | ||||||
|  |                 navigator.clipboard.writeText(codeblock.textContent); | ||||||
|  |                 copyingDone(); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             const range = document.createRange(); | ||||||
|  |             range.selectNodeContents(codeblock); | ||||||
|  |             const selection = window.getSelection(); | ||||||
|  |             selection.removeAllRanges(); | ||||||
|  |             selection.addRange(range); | ||||||
|  |             try { | ||||||
|  |                 document.execCommand('copy'); | ||||||
|  |                 copyingDone(); | ||||||
|  |             } catch (e) { }; | ||||||
|  |             selection.removeRange(range); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         if (container.classList.contains("highlight")) { | ||||||
|  |             container.appendChild(copybutton); | ||||||
|  |         } else if (container.parentNode.firstChild == container) { | ||||||
|  |             // td containing LineNos | ||||||
|  |         } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") { | ||||||
|  |             // table containing LineNos and code | ||||||
|  |             codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton); | ||||||
|  |         } else { | ||||||
|  |             // code blocks not having highlight as parent class | ||||||
|  |             codeblock.parentNode.appendChild(copybutton); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | initializeMenu(); | ||||||
|  | if (params.scrollToTop) scrollToTop(); | ||||||
|  | if (params.themeToggle) themeToggle(); | ||||||
|  | if (params.showCodeCopyButtons) showCodeCopyButtons(); | ||||||
|  |  | ||||||
|  | if ('hljs' in window) { | ||||||
|  |     hljs.highlightAll(); | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								assets/js/theme.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								assets/js/theme.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | // for now this is assuming default theme is set to dark | ||||||
|  | // will probably refactor in the future for much better handling | ||||||
|  | function loadPreferredTheme() { | ||||||
|  |     if (localStorage.getItem("pref-theme") === "light") { | ||||||
|  |         document.body.classList.remove('dark') | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | loadPreferredTheme(); | ||||||
| @@ -23,113 +23,4 @@ | |||||||
|  |  | ||||||
| {{- partial "extend_footer.html" . }} | {{- partial "extend_footer.html" . }} | ||||||
|  |  | ||||||
| <script> | {{- partial "script.html" . }} | ||||||
|     let menu = document.getElementById('menu') |  | ||||||
|     if (menu) { |  | ||||||
|         menu.scrollLeft = localStorage.getItem("menu-scroll-position"); |  | ||||||
|         menu.onscroll = function () { |  | ||||||
|             localStorage.setItem("menu-scroll-position", menu.scrollLeft); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     document.querySelectorAll('a[href^="#"]').forEach(anchor => { |  | ||||||
|         anchor.addEventListener("click", function (e) { |  | ||||||
|             e.preventDefault(); |  | ||||||
|             var id = this.getAttribute("href").substr(1); |  | ||||||
|             if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { |  | ||||||
|                 document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ |  | ||||||
|                     behavior: "smooth" |  | ||||||
|                 }); |  | ||||||
|             } else { |  | ||||||
|                 document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView(); |  | ||||||
|             } |  | ||||||
|             if (id === "top") { |  | ||||||
|                 history.replaceState(null, null, " "); |  | ||||||
|             } else { |  | ||||||
|                 history.pushState(null, null, `#${id}`); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| {{- if (not site.Params.disableScrollToTop) }} |  | ||||||
| <script> |  | ||||||
|     var mybutton = document.getElementById("top-link"); |  | ||||||
|     window.onscroll = function () { |  | ||||||
|         if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { |  | ||||||
|             mybutton.style.visibility = "visible"; |  | ||||||
|             mybutton.style.opacity = "1"; |  | ||||||
|         } else { |  | ||||||
|             mybutton.style.visibility = "hidden"; |  | ||||||
|             mybutton.style.opacity = "0"; |  | ||||||
|         } |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{- if (not site.Params.disableThemeToggle) }} |  | ||||||
| <script> |  | ||||||
|     document.getElementById("theme-toggle").addEventListener("click", () => { |  | ||||||
|         if (document.body.className.includes("dark")) { |  | ||||||
|             document.body.classList.remove('dark'); |  | ||||||
|             localStorage.setItem("pref-theme", 'light'); |  | ||||||
|         } else { |  | ||||||
|             document.body.classList.add('dark'); |  | ||||||
|             localStorage.setItem("pref-theme", 'dark'); |  | ||||||
|         } |  | ||||||
|     }) |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }} |  | ||||||
| <script> |  | ||||||
|     document.querySelectorAll('pre > code').forEach((codeblock) => { |  | ||||||
|         const container = codeblock.parentNode.parentNode; |  | ||||||
|  |  | ||||||
|         const copybutton = document.createElement('button'); |  | ||||||
|         copybutton.classList.add('copy-code'); |  | ||||||
|         copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}'; |  | ||||||
|  |  | ||||||
|         function copyingDone() { |  | ||||||
|             copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}'; |  | ||||||
|             setTimeout(() => { |  | ||||||
|                 copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}'; |  | ||||||
|             }, 2000); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         copybutton.addEventListener('click', (cb) => { |  | ||||||
|             if ('clipboard' in navigator) { |  | ||||||
|                 navigator.clipboard.writeText(codeblock.textContent); |  | ||||||
|                 copyingDone(); |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             const range = document.createRange(); |  | ||||||
|             range.selectNodeContents(codeblock); |  | ||||||
|             const selection = window.getSelection(); |  | ||||||
|             selection.removeAllRanges(); |  | ||||||
|             selection.addRange(range); |  | ||||||
|             try { |  | ||||||
|                 document.execCommand('copy'); |  | ||||||
|                 copyingDone(); |  | ||||||
|             } catch (e) { }; |  | ||||||
|             selection.removeRange(range); |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
|         if (container.classList.contains("highlight")) { |  | ||||||
|             container.appendChild(copybutton); |  | ||||||
|         } else if (container.parentNode.firstChild == container) { |  | ||||||
|             // td containing LineNos |  | ||||||
|         } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") { |  | ||||||
|             // table containing LineNos and code |  | ||||||
|             codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton); |  | ||||||
|         } else { |  | ||||||
|             // code blocks not having highlight as parent class |  | ||||||
|             codeblock.parentNode.appendChild(copybutton); |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| </script> |  | ||||||
| {{- end }} |  | ||||||
| @@ -71,34 +71,6 @@ | |||||||
| <link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style"> | <link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style"> | ||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
| {{- /* Search */}} |  | ||||||
| {{- if (eq .Layout `search`) -}} |  | ||||||
| <link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json"> |  | ||||||
| {{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }} |  | ||||||
| {{- $fusejs := resources.Get "js/fuse.basic.min.js" }} |  | ||||||
| {{- $license_js := resources.Get "js/license.js" }} |  | ||||||
| {{- if not site.Params.assets.disableFingerprinting }} |  | ||||||
| {{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }} |  | ||||||
| <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script> |  | ||||||
| {{- else }} |  | ||||||
| {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }} |  | ||||||
| <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script> |  | ||||||
| {{- end }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{- /* Highlight.js */}} |  | ||||||
| {{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }} |  | ||||||
| {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }} |  | ||||||
| {{- if not site.Params.assets.disableFingerprinting }} |  | ||||||
| {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }} |  | ||||||
| <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}" |  | ||||||
|     onload="hljs.initHighlightingOnLoad();"></script> |  | ||||||
| {{- else }} |  | ||||||
| {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }} |  | ||||||
| <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script> |  | ||||||
| {{- end }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{- /* Favicons */}} | {{- /* Favicons */}} | ||||||
| <link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}"> | <link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}"> | ||||||
| <link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}"> | <link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}"> | ||||||
|   | |||||||
| @@ -1,42 +1,13 @@ | |||||||
| {{- /* theme-toggle is enabled */}} | {{- /* theme.js */}} | ||||||
| {{- if (not site.Params.disableThemeToggle) }} | {{- if not site.Params.disableThemeToggle }} | ||||||
| {{- /* theme is light */}} | {{- $theme := resources.Get "js/theme.js" | resources.Minify }} | ||||||
| {{- if (eq site.Params.defaultTheme "light") }} | {{- if not site.Params.assets.disableFingerprinting }} | ||||||
| <script> | {{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" | fingerprint }} | ||||||
|     if (localStorage.getItem("pref-theme") === "dark") { | <script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}" integrity="{{ $theme_js.Data.Integrity }}"></script> | ||||||
|         document.body.classList.add('dark'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- /* theme is dark */}} |  | ||||||
| {{- else if (eq site.Params.defaultTheme "dark") }} |  | ||||||
| <script> |  | ||||||
|     if (localStorage.getItem("pref-theme") === "light") { |  | ||||||
|         document.body.classList.remove('dark') |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- else }} | {{- else }} | ||||||
| {{- /* theme is auto */}} | {{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" }} | ||||||
| <script> | <script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}"></script> | ||||||
|     if (localStorage.getItem("pref-theme") === "dark") { |  | ||||||
|         document.body.classList.add('dark'); |  | ||||||
|     } else if (localStorage.getItem("pref-theme") === "light") { |  | ||||||
|         document.body.classList.remove('dark') |  | ||||||
|     } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) { |  | ||||||
|         document.body.classList.add('dark'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- /* theme-toggle is disabled and theme is auto */}} |  | ||||||
| {{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}} |  | ||||||
| <script> |  | ||||||
|     if (window.matchMedia('(prefers-color-scheme: dark)').matches) { |  | ||||||
|         document.body.classList.add('dark'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| </script> |  | ||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
| <header class="header"> | <header class="header"> | ||||||
|   | |||||||
							
								
								
									
										39
									
								
								layouts/partials/script.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								layouts/partials/script.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | {{- /* Search */}} | ||||||
|  | {{- if (eq .Layout `search`) -}} | ||||||
|  | <link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json"> | ||||||
|  | {{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }} | ||||||
|  | {{- $fusejs := resources.Get "js/fuse.basic.min.js" }} | ||||||
|  | {{- $license_js := resources.Get "js/license.js" }} | ||||||
|  | {{- if not site.Params.assets.disableFingerprinting }} | ||||||
|  | {{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }} | ||||||
|  | <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script> | ||||||
|  | {{- else }} | ||||||
|  | {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }} | ||||||
|  | <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script> | ||||||
|  | {{- end }} | ||||||
|  | {{- end -}} | ||||||
|  |  | ||||||
|  | {{- /* Highlight.js */}} | ||||||
|  | {{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }} | ||||||
|  | {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }} | ||||||
|  | {{- if not site.Params.assets.disableFingerprinting }} | ||||||
|  | {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }} | ||||||
|  | <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"></script> | ||||||
|  | {{- else }} | ||||||
|  | {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }} | ||||||
|  | <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}"></script> | ||||||
|  | {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |  | ||||||
|  | {{- /* PaperMod.js */}} | ||||||
|  | {{- $scrollToTop := (not site.Params.disableScrollToTop | default .Params.disableScrollToTop ) }} | ||||||
|  | {{- $themeToggle := (not site.Params.disableThemeToggle | default .Params.disableThemeToggle ) }} | ||||||
|  | {{- $showCodeCopyButtons := ((and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (site.Params.ShowCodeCopyButtons)) | default .Params.ShowCodeCopyButtons ) }} | ||||||
|  | {{- $papermod := resources.Get "js/papermod.js" | js.Build (dict "params" (dict "scrollToTop" $scrollToTop "themeToggle" $themeToggle "showCodeCopyButtons" $showCodeCopyButtons)) | resources.Minify }} | ||||||
|  | {{- if not site.Params.assets.disableFingerprinting }} | ||||||
|  | {{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" | fingerprint }} | ||||||
|  | <script defer crossorigin="anonymous" src="{{ $papermod_js.RelPermalink }}" integrity="{{ $papermod_js.Data.Integrity }}"></script> | ||||||
|  | {{- else }} | ||||||
|  | {{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" }} | ||||||
|  | <script defer crossorigin="anonymous" type="module" src="{{ $papermod_js.RelPermalink }}"></script> | ||||||
|  | {{- end }} | ||||||
		Reference in New Issue
	
	Block a user
	 Wonderfall
					Wonderfall