| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { LlmModelType } from '@/constants/knowledge';
- import { useComposeLlmOptionsByModelTypes } from '@/hooks/llm-hooks';
- import * as SelectPrimitive from '@radix-ui/react-select';
- import { forwardRef, memo, useState } from 'react';
- import { LlmSettingFieldItems } from '../llm-setting-items/next';
- import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';
- import { Select, SelectTrigger, SelectValue } from '../ui/select';
-
- interface IProps {
- id?: string;
- value?: string;
- onInitialValue?: (value: string, option: any) => void;
- onChange?: (value: string) => void;
- disabled?: boolean;
- filter?: string;
- }
-
- const NextInnerLLMSelect = forwardRef<
- React.ElementRef<typeof SelectPrimitive.Trigger>,
- IProps
- >(({ value, disabled, filter }, ref) => {
- const [isPopoverOpen, setIsPopoverOpen] = useState(false);
- const modelTypes =
- filter === 'all' || filter === undefined
- ? [LlmModelType.Chat, LlmModelType.Image2text]
- : [filter as LlmModelType];
- const modelOptions = useComposeLlmOptionsByModelTypes(modelTypes);
-
- return (
- <Select disabled={disabled} value={value}>
- <Popover open={isPopoverOpen} onOpenChange={setIsPopoverOpen}>
- <PopoverTrigger asChild>
- <SelectTrigger
- onClick={(e) => {
- e.preventDefault();
- setIsPopoverOpen(true);
- }}
- ref={ref}
- >
- <SelectValue>
- {
- modelOptions
- .flatMap((x) => x.options)
- .find((x) => x.value === value)?.label
- }
- </SelectValue>
- </SelectTrigger>
- </PopoverTrigger>
- <PopoverContent side={'left'}>
- <LlmSettingFieldItems options={modelOptions}></LlmSettingFieldItems>
- </PopoverContent>
- </Popover>
- </Select>
- );
- });
-
- NextInnerLLMSelect.displayName = 'LLMSelect';
-
- export const NextLLMSelect = memo(NextInnerLLMSelect);
|