You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			HTML
		
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			HTML
		
	
| {{if $.Site.Data.config.enableLinkPreview}}
 | |
| <script>
 | |
| async function run() {
 | |
|   const {content} = await fetchData()
 | |
|   function htmlToElement(html) {
 | |
|     const template = document.createElement('template')
 | |
|     html = html.trim()
 | |
|     template.innerHTML = html
 | |
|     return template.content.firstChild
 | |
|   }
 | |
| 
 | |
|   const pathRegex = /\.\.?(\/\.\.)*/
 | |
|   document.addEventListener("DOMContentLoaded", () => {
 | |
|     [...document.getElementsByClassName("internal-link")]
 | |
|       .forEach(li => {
 | |
|         const linkDest = content[li.dataset.src.replace(pathRegex, '')]
 | |
|         if (linkDest) {
 | |
|           const popoverElement = `<div class="popover">
 | |
|     <h3>${linkDest.title}</h3>
 | |
|     <p>${removeMarkdown(linkDest.content).split(" ", 15).join(" ")}...</p>
 | |
| </div>`
 | |
|           const el = htmlToElement(popoverElement)
 | |
|           li.appendChild(el)
 | |
|           li.addEventListener("mouseover", () => {
 | |
|             el.classList.add("visible")
 | |
|           })
 | |
|           li.addEventListener("mouseout", () => {
 | |
|             el.classList.remove("visible")
 | |
|           })
 | |
|         }
 | |
|       })
 | |
|   })
 | |
| }
 | |
| 
 | |
| run()
 | |
| </script>
 | |
| {{end}} |