mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
feat: model selector fuzzy search
Co-Authored-By: Aryan Kothari <87589047+thearyadev@users.noreply.github.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { DropdownMenu } from 'bits-ui';
|
||||
import { marked } from 'marked';
|
||||
import Fuse from 'fuse.js';
|
||||
|
||||
import { flyAndScale } from '$lib/utils/transitions';
|
||||
import { createEventDispatcher, onMount, getContext, tick } from 'svelte';
|
||||
@@ -45,17 +46,28 @@
|
||||
|
||||
let selectedModelIdx = 0;
|
||||
|
||||
$: filteredItems = items.filter(
|
||||
(item) =>
|
||||
(searchValue
|
||||
? item.value.toLowerCase().includes(searchValue.toLowerCase()) ||
|
||||
item.label.toLowerCase().includes(searchValue.toLowerCase()) ||
|
||||
(item.model?.info?.meta?.tags ?? []).some((tag) =>
|
||||
tag.name.toLowerCase().includes(searchValue.toLowerCase())
|
||||
)
|
||||
: true) && !(item.model?.info?.meta?.hidden ?? false)
|
||||
const fuse = new Fuse(
|
||||
items
|
||||
.filter((item) => !item.model?.info?.meta?.hidden)
|
||||
.map((item) => {
|
||||
const _item = {
|
||||
...item,
|
||||
modelName: item.model?.name,
|
||||
tags: item.model?.info?.meta?.tags?.map((tag) => tag.name).join(' ')
|
||||
};
|
||||
return _item;
|
||||
}),
|
||||
{
|
||||
keys: ['value', 'label', 'tags', 'modelName']
|
||||
}
|
||||
);
|
||||
|
||||
$: filteredItems = searchValue
|
||||
? fuse.search(searchValue).map((e) => {
|
||||
return e.item;
|
||||
})
|
||||
: items.filter((item) => !item.model?.info?.meta?.hidden);
|
||||
|
||||
const pullModelHandler = async () => {
|
||||
const sanitizedModelTag = searchValue.trim().replace(/^ollama\s+(run|pull)\s+/, '');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user