diff --git a/package-lock.json b/package-lock.json index 2d50e86d9..bba872a3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", - "flexsearch": "0.7.43", + "flexsearch": "^0.8.205", "github-slugger": "^2.0.0", "globby": "^14.1.0", "gray-matter": "^4.0.3", @@ -3189,9 +3189,36 @@ } }, "node_modules/flexsearch": { - "version": "0.7.43", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz", - "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==" + "version": "0.8.205", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.8.205.tgz", + "integrity": "sha512-REFjMqy86DKkCTJ4gIE42c9MVm9t1vUWfEub/8taixYuhvyu4jd4XmFALk5VuKW4GH4VLav8A4BJboTsslHF1w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/ts-thomas" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/flexsearch" + }, + { + "type": "patreon", + "url": "https://patreon.com/user?u=96245532" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/ts-thomas" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW" + }, + { + "type": "bountysource", + "url": "https://salt.bountysource.com/teams/ts-thomas" + } + ], + "license": "Apache-2.0" }, "node_modules/format": { "version": "0.2.2", diff --git a/package.json b/package.json index 790af38b0..aa61c3d87 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "cli-spinner": "^0.2.10", "d3": "^7.9.0", "esbuild-sass-plugin": "^3.3.1", - "flexsearch": "0.7.43", + "flexsearch": "^0.8.205", "github-slugger": "^2.0.0", "globby": "^14.1.0", "gray-matter": "^4.0.3", diff --git a/quartz/components/scripts/search.inline.ts b/quartz/components/scripts/search.inline.ts index 28d47e9e2..137cb447c 100644 --- a/quartz/components/scripts/search.inline.ts +++ b/quartz/components/scripts/search.inline.ts @@ -15,13 +15,14 @@ interface Item { type SearchType = "basic" | "tags" let searchType: SearchType = "basic" let currentSearchTerm: string = "" -const encoder = (str: string) => str.toLowerCase().split(/([^a-z]|[^\x00-\x7F])/) +const encoder = (str: string) => str.toLowerCase().split(/\s+/) let index = new FlexSearch.Document({ - charset: "latin:extra", + charset: "Default", encode: encoder, document: { id: "id", tag: "tags", + rtl: true, index: [ { field: "title",