($searching = false)}>
+
($searching = false)}
+ on:keydown={(e) => e.key === ' ' && ($searching = false)}
+ >
/g, '>');
+ return text.replace(//g, '>').replaceAll('`', '');
}
/**
@@ -19,6 +19,8 @@
* @param {string} query
*/
function excerpt(content, query) {
+ if (content === null) return '';
+
const index = content.toLowerCase().indexOf(query.toLowerCase());
if (index === -1) {
return escape(content.slice(0, 100));
diff --git a/sites/svelte.dev/src/lib/search/content.js b/sites/svelte.dev/src/lib/search/content.js
index a45c2f4bc1..d9c229588b 100644
--- a/sites/svelte.dev/src/lib/search/content.js
+++ b/sites/svelte.dev/src/lib/search/content.js
@@ -42,7 +42,7 @@ export function content() {
const { body, metadata } = extract_frontmatter(markdown);
- const sections = body.trim().split(/^## /m);
+ const sections = body.trim().split(/^### /m);
const intro = sections.shift().trim();
const rank = +metadata.rank || undefined;
diff --git a/sites/svelte.dev/src/lib/workers/search.js b/sites/svelte.dev/src/lib/workers/search.js
new file mode 100644
index 0000000000..2cb5227745
--- /dev/null
+++ b/sites/svelte.dev/src/lib/workers/search.js
@@ -0,0 +1,26 @@
+import { init, search, lookup } from '../search/search.js';
+
+addEventListener('message', async (event) => {
+ const { type, payload } = event.data;
+
+ if (type === 'init') {
+ const res = await fetch(`${payload.origin}/content.json`);
+ const { blocks } = await res.json();
+ init(blocks);
+
+ postMessage({ type: 'ready' });
+ }
+
+ if (type === 'query') {
+ const query = payload;
+ const results = search(query);
+
+ postMessage({ type: 'results', payload: { results, query } });
+ }
+
+ if (type === 'recents') {
+ const results = payload.map(lookup).filter(Boolean);
+
+ postMessage({ type: 'recents', payload: results });
+ }
+});
diff --git a/sites/svelte.dev/src/routes/+layout.svelte b/sites/svelte.dev/src/routes/+layout.svelte
index f558fac931..c044d53184 100644
--- a/sites/svelte.dev/src/routes/+layout.svelte
+++ b/sites/svelte.dev/src/routes/+layout.svelte
@@ -1,7 +1,9 @@
@@ -61,6 +63,10 @@
+{#if browser}
+
+{/if}
+