Skip to content

Commit 81d8d4d

Browse files
committed
deploy: a7ba8f4
1 parent ec93a23 commit 81d8d4d

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ searchWorker.onmessage = function (e) {
5656
}
5757

5858
function onSearchInput(event) {
59-
searchWorker.postMessage(event.target.value || "");
59+
searchWorker.postMessage({"query": event.target.value || ""});
6060
}
6161

6262
// Keyboard shortcuts: `/` to open, `Escape` to close

search/search.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ function setupModal(config, renderFn) {
9393
// Send input to worker
9494
const worker = createSearchWorker(config, modalBody, renderFn)
9595
modalInput.addEventListener("input", function() {
96-
worker.postMessage(this.value)
96+
worker.postMessage({query: this.value})
97+
})
98+
modalInput.addEventListener("keydown", function(event) {
99+
if (event.key === "Enter") worker.postMessage({query: this.value, flush: true})
97100
})
98101

99102
return true
@@ -108,13 +111,16 @@ function setupPage(config, renderFn) {
108111
// Send input to worker
109112
const worker = createSearchWorker(config, resultsContainer, renderFn)
110113
searchBar.addEventListener("input", function() {
111-
worker.postMessage(this.value)
114+
worker.postMessage({query: this.value})
115+
})
116+
searchBar.addEventListener("keydown", function(event) {
117+
if (event.key === "Enter") worker.postMessage({query: this.value, flush: true})
112118
})
113119

114120
// If query param `q` is set, use it as initial query
115121
if (config.query) {
116122
searchBar.value = config.query
117-
worker.postMessage(config.query)
123+
worker.postMessage({query: config.query, flush: true})
118124
}
119125

120126
return true

search/worker.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,35 @@ async function searchIt(query) {
2424
return querier.search(query)
2525
}
2626

27-
onmessage = async function(e) {
28-
const query = e.data || '' // empty strings become undefined somehow ...
29-
this.postMessage(await searchIt(query))
27+
const waitMs = 100
28+
let timeoutId = null
29+
let lastValue = ""
30+
31+
function post(value) {
32+
lastValue = value
33+
if (timeoutId) clearTimeout(timeoutId)
34+
timeoutId = setTimeout(async () => {
35+
timeoutId = null
36+
postMessage(await searchIt(lastValue))
37+
}, waitMs)
38+
}
39+
40+
async function flush(value) {
41+
if (timeoutId) {
42+
clearTimeout(timeoutId)
43+
timeoutId = null
44+
}
45+
postMessage(await searchIt(value))
46+
}
47+
48+
onmessage = function(e) {
49+
const msg = e.data
50+
const query = msg.query || ''
51+
if (msg.flush) {
52+
flush(query)
53+
} else {
54+
post(query)
55+
}
3056
}
3157

3258
if (maybeQuery == undefined) {

0 commit comments

Comments
 (0)