pages/search: escape tab text

This commit is contained in:
He4eT 2024-01-26 17:46:42 +01:00
commit 4924efd0b6

View file

@ -1,18 +1,27 @@
const fuzzysort = window.fuzzysort
/* */
const highlightTagName = crypto.randomUUID().slice(0, 4)
const unescapeHighlight = (innerText) =>
innerText
.replaceAll(`&lt;${highlightTagName}&gt;`, '<b>')
.replaceAll(`&lt;/${highlightTagName}&gt;`, '</b>')
/* https://png-pixel.com/ */
const defaultFavicon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkqAcAAIUAgUW0RjgAAAAASUVORK5CYII='
const tabView = (result) => {
const tab = result.obj
const [label, title, url] = result.map((field) =>
fuzzysort.highlight(field))
fuzzysort.highlight(field, `<${highlightTagName}>`, `</${highlightTagName}>`))
/* Parts */
const labelSpan = document.createElement('span')
labelSpan.classList.add('label')
labelSpan.textContent = label ?? tab.label
labelSpan.innerHTML = unescapeHighlight(labelSpan.innerHTML)
const faviconImg = document.createElement('img')
faviconImg.classList.add('favicon')
@ -25,10 +34,12 @@ const tabView = (result) => {
const titleSpan = document.createElement('span')
titleSpan.classList.add('title')
titleSpan.textContent = title ?? tab.title
titleSpan.innerHTML = unescapeHighlight(titleSpan.innerHTML)
const urlSpan = document.createElement('span')
urlSpan.classList.add('url')
urlSpan.textContent = url ?? tab.url
urlSpan.innerHTML = unescapeHighlight(urlSpan.innerHTML)
const parts = [
labelSpan,