import React from 'react'; import type { ModelSelectorProps } from '~/common'; import { ModelSelectorProvider, useModelSelectorContext } from './ModelSelectorContext'; import { renderModelSpecs, renderEndpoints, renderSearchResults } from './components'; import { CustomMenu as Menu } from './CustomMenu'; import DialogManager from './DialogManager'; import { getSelectedIcon } from './utils'; import { useLocalize } from '~/hooks'; function ModelSelectorContent() { const localize = useLocalize(); const { // LibreChat modelSpecs, mappedEndpoints, endpointsConfig, // State searchValue, searchResults, selectedValues, // Functions setSearchValue, getDisplayValue, setSelectedValues, // Dialog keyDialogOpen, onOpenChange, keyDialogEndpoint, } = useModelSelectorContext(); const selectedIcon = getSelectedIcon({ mappedEndpoints: mappedEndpoints ?? [], selectedValues, modelSpecs, endpointsConfig, }); const selectedDisplayValue = getDisplayValue(); const trigger = ( ); return (
) => { setSelectedValues({ endpoint: values.endpoint || '', model: values.model || '', modelSpec: values.modelSpec || '', }); }} onSearch={(value) => setSearchValue(value)} combobox={} trigger={trigger} > {searchResults ? ( renderSearchResults(searchResults, localize, searchValue) ) : ( <> {renderModelSpecs(modelSpecs, selectedValues.modelSpec || '')} {renderEndpoints(mappedEndpoints ?? [])} )}
); } export default function ModelSelector({ interfaceConfig, modelSpecs }: ModelSelectorProps) { return ( ); }