|
|
@ -58,27 +58,21 @@ const removeMarkdown = (
|
|
|
|
};
|
|
|
|
};
|
|
|
|
// -----
|
|
|
|
// -----
|
|
|
|
|
|
|
|
|
|
|
|
(async function () {
|
|
|
|
(async function() {
|
|
|
|
|
|
|
|
const encoder = str => str.toLowerCase().split(/([^a-z]|[^\x00-\x7F])+/)
|
|
|
|
const contentIndex = new FlexSearch.Document({
|
|
|
|
const contentIndex = new FlexSearch.Document({
|
|
|
|
cache: true,
|
|
|
|
cache: true,
|
|
|
|
charset: "latin:extra",
|
|
|
|
charset: "latin:extra",
|
|
|
|
optimize: true,
|
|
|
|
optimize: true,
|
|
|
|
worker: true,
|
|
|
|
|
|
|
|
document: {
|
|
|
|
|
|
|
|
index: [{
|
|
|
|
index: [{
|
|
|
|
field: "content",
|
|
|
|
field: "content",
|
|
|
|
tokenize: "strict",
|
|
|
|
tokenize: "reverse",
|
|
|
|
context: {
|
|
|
|
encode: encoder,
|
|
|
|
resolution: 5,
|
|
|
|
|
|
|
|
depth: 3,
|
|
|
|
|
|
|
|
bidirectional: true
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
suggest: true,
|
|
|
|
|
|
|
|
}, {
|
|
|
|
}, {
|
|
|
|
field: "title",
|
|
|
|
field: "title",
|
|
|
|
tokenize: "forward",
|
|
|
|
tokenize: "forward",
|
|
|
|
|
|
|
|
encode: encoder,
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const { content } = await fetchData
|
|
|
|
const { content } = await fetchData
|
|
|
@ -158,17 +152,16 @@ const removeMarkdown = (
|
|
|
|
})
|
|
|
|
})
|
|
|
|
source.addEventListener('input', (e) => {
|
|
|
|
source.addEventListener('input', (e) => {
|
|
|
|
term = e.target.value
|
|
|
|
term = e.target.value
|
|
|
|
contentIndex.search(term, [
|
|
|
|
const searchResults = contentIndex.search(term, [
|
|
|
|
{
|
|
|
|
{
|
|
|
|
field: "content",
|
|
|
|
field: "content",
|
|
|
|
limit: 10,
|
|
|
|
limit: 10,
|
|
|
|
suggest: true,
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
field: "title",
|
|
|
|
field: "title",
|
|
|
|
limit: 5,
|
|
|
|
limit: 5,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]).then(searchResults => {
|
|
|
|
])
|
|
|
|
const getByField = field => {
|
|
|
|
const getByField = field => {
|
|
|
|
const results = searchResults.filter(x => x.field === field)
|
|
|
|
const results = searchResults.filter(x => x.field === field)
|
|
|
|
if (results.length === 0) {
|
|
|
|
if (results.length === 0) {
|
|
|
@ -199,7 +192,6 @@ const removeMarkdown = (
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const searchContainer = document.getElementById("search-container")
|
|
|
|
const searchContainer = document.getElementById("search-container")
|
|
|
@ -220,7 +212,7 @@ const removeMarkdown = (
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
document.addEventListener('keydown', (event) => {
|
|
|
|
document.addEventListener('keydown', (event) => {
|
|
|
|
if (event.key === "/") {
|
|
|
|
if (event.key === "k" && (event.ctrlKey || event.metaKey)) {
|
|
|
|
event.preventDefault()
|
|
|
|
event.preventDefault()
|
|
|
|
openSearch()
|
|
|
|
openSearch()
|
|
|
|
}
|
|
|
|
}
|
|
|
|