function htmlToElement(html) {
const template = document.createElement("template")
html = html.trim()
template.innerHTML = html
return template.content.firstChild
}
function initPopover(baseURL, useContextualBacklinks) {
const basePath = baseURL.replace(window.location.origin, "")
fetchData.then(({ content }) => {
const links = [...document.getElementsByClassName("internal-link")]
links
.filter(li => li.dataset.src || (li.dataset.idx && useContextualBacklinks))
.forEach(li => {
if (li.dataset.ctx) {
const linkDest = content[li.dataset.src]
const popoverElement = `
${linkDest.title}
${highlight(removeMarkdown(linkDest.content), li.dataset.ctx)}...
${new Date(linkDest.lastmodified).toLocaleDateString()}
`
const el = htmlToElement(popoverElement)
li.appendChild(el)
li.addEventListener("mouseover", () => {
el.classList.add("visible")
})
li.addEventListener("mouseout", () => {
el.classList.remove("visible")
})
} else {
const linkDest = content[li.dataset.src.replace(/\/$/g, "").replace(basePath, "")]
if (linkDest) {
const popoverElement = `
${linkDest.title}
${removeMarkdown(linkDest.content).split(" ", 20).join(" ")}...
${new Date(linkDest.lastmodified).toLocaleDateString()}
`
const el = htmlToElement(popoverElement)
li.appendChild(el)
li.addEventListener("mouseover", () => {
el.classList.add("visible")
})
li.addEventListener("mouseout", () => {
el.classList.remove("visible")
})
}
}
})
})
}