@@ -193,6 +193,7 @@ body:has(:is(.bard-fullscreen, .replicator-fullscreen)) [data-reka-popper-conten
193193
194194<script >
195195import { Primitive } from ' reka-ui' ;
196+ import fuzzysort from ' fuzzysort' ;
196197
197198export default {
198199 emits: [' added' , ' clicked-away' ],
@@ -263,14 +264,7 @@ export default {
263264 }, []);
264265
265266 if (this .search ) {
266- return sets
267- .filter ((set ) => ! set .hide )
268- .filter ((set ) => {
269- return (
270- __ (set .display ).toLowerCase ().includes (this .search .toLowerCase ()) ||
271- set .handle .toLowerCase ().includes (this .search .toLowerCase ())
272- );
273- });
267+ sets = this .filterSetsBySearch (sets);
274268 }
275269
276270 return sets .filter ((set ) => ! set .hide );
@@ -317,12 +311,7 @@ export default {
317311
318312 // Apply search filter if there's a search term
319313 if (this .search ) {
320- filteredSets = filteredSets .filter (set => {
321- return (
322- __ (set .display ).toLowerCase ().includes (this .search .toLowerCase ()) ||
323- set .handle .toLowerCase ().includes (this .search .toLowerCase ())
324- );
325- });
314+ filteredSets = this .filterSetsBySearch (filteredSets);
326315 }
327316
328317 groups[group .handle ] = {
@@ -479,6 +468,21 @@ export default {
479468 isSetLoading (handle ) {
480469 return this .loadingSet === handle;
481470 },
471+
472+ filterSetsBySearch (sets ) {
473+ return fuzzysort
474+ .go (this .search , sets, {
475+ all: true ,
476+ keys: [(set ) => __ (set .display ), ' handle' , (set ) => __ (set .instructions )],
477+ scoreFn : (scores ) => {
478+ const displayScore = scores[0 ]? .score ?? - Infinity ;
479+ const handleScore = scores[1 ]? .score ?? - Infinity ;
480+ const instructionsScore = (scores[2 ]? .score ?? - Infinity ) * 0.5 ;
481+ return Math .max (displayScore, handleScore, instructionsScore);
482+ },
483+ })
484+ .map ((result ) => result .obj );
485+ }
482486 },
483487};
484488< / script>
0 commit comments