@ -1,5 +1,5 @@
function htmlToElement ( html ) {
function htmlToElement ( html ) {
const template = document . createElement ( 'template' )
const template = document . createElement ( "template" )
html = html . trim ( )
html = html . trim ( )
template . innerHTML = html
template . innerHTML = html
return template . content . firstChild
return template . content . firstChild
@ -7,19 +7,33 @@ function htmlToElement(html) {
function initPopover ( baseURL , useContextualBacklinks ) {
function initPopover ( baseURL , useContextualBacklinks ) {
const basePath = baseURL . replace ( window . location . origin , "" )
const basePath = baseURL . replace ( window . location . origin , "" )
document . addEventListener ( "DOMContentLoaded" , ( ) => {
fetchData . then ( ( { content } ) => {
fetchData . then ( ( { content } ) => {
const links = [ ... document . getElementsByClassName ( "internal-link" ) ]
const links = [ ... document . getElementsByClassName ( "internal-link" ) ]
links
links
. filter ( li => li . dataset . src || ( li . dataset . idx && useContextualBacklinks ) )
. filter ( li => li . dataset . src || ( li . dataset . idx && useContextualBacklinks ) )
. forEach ( li => {
. forEach ( li => {
if ( li . dataset . ctx ) {
if ( li . dataset . ctx ) {
const linkDest = content [ li . dataset . src ]
console . log ( li . dataset . ctx )
const popoverElement = ` <div class="popover">
const linkDest = content [ li . dataset . src ]
const popoverElement = ` <div class="popover">
< h3 > $ { linkDest . title } < / h 3 >
< h3 > $ { linkDest . title } < / h 3 >
< p > $ { highlight ( removeMarkdown ( linkDest . content ) , li . dataset . ctx ) } ... < / p >
< p > $ { highlight ( removeMarkdown ( linkDest . content ) , li . dataset . ctx ) } ... < / p >
< p class = "meta" > $ { new Date ( linkDest . lastmodified ) . toLocaleDateString ( ) } < / p >
< p class = "meta" > $ { new Date ( linkDest . lastmodified ) . toLocaleDateString ( ) } < / p >
< / d i v > `
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 = ` <div class="popover">
< h3 > $ { linkDest . title } < / h 3 >
< p > $ { removeMarkdown ( linkDest . content ) . split ( " " , 20 ) . join ( " " ) } ... < / p >
< p class = "meta" > $ { new Date ( linkDest . lastmodified ) . toLocaleDateString ( ) } < / p >
< / d i v > `
< / d i v > `
const el = htmlToElement ( popoverElement )
const el = htmlToElement ( popoverElement )
li . appendChild ( el )
li . appendChild ( el )
@ -29,25 +43,8 @@ function initPopover(baseURL, useContextualBacklinks) {
li . addEventListener ( "mouseout" , ( ) => {
li . addEventListener ( "mouseout" , ( ) => {
el . classList . remove ( "visible" )
el . classList . remove ( "visible" )
} )
} )
} else {
const linkDest = content [ li . dataset . src . replace ( /\/$/g , "" ) . replace ( basePath , "" ) ]
if ( linkDest ) {
const popoverElement = ` <div class="popover">
< h3 > $ { linkDest . title } < / h 3 >
< p > $ { removeMarkdown ( linkDest . content ) . split ( " " , 20 ) . join ( " " ) } ... < / p >
< p class = "meta" > $ { new Date ( linkDest . lastmodified ) . toLocaleDateString ( ) } < / p >
< / d i v > `
const el = htmlToElement ( popoverElement )
li . appendChild ( el )
li . addEventListener ( "mouseover" , ( ) => {
el . classList . add ( "visible" )
} )
li . addEventListener ( "mouseout" , ( ) => {
el . classList . remove ( "visible" )
} )
}
}
}
} )
}
} )
} )
} )
} )
}
}