Spaces:
Running
Running
| /** | |
| * | |
| * Copyright 2023-2025 InspectorRAGet Team | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| **/ | |
| 'use client'; | |
| import { memo } from 'react'; | |
| import { Select, SelectItem } from '@carbon/react'; | |
| import { Model } from '@/src/types'; | |
| interface Props { | |
| id: string; | |
| models: Model[]; | |
| onSelect: Function; | |
| defaultValue?: Model; | |
| disabledModels?: Model[]; | |
| warn?: boolean; | |
| warnText?: string; | |
| disabled?: boolean; | |
| } | |
| export default memo(function ModelSelector({ | |
| id, | |
| models, | |
| onSelect, | |
| defaultValue, | |
| disabledModels, | |
| warn = false, | |
| warnText, | |
| disabled = false, | |
| }: Props) { | |
| return ( | |
| <Select | |
| id={id} | |
| defaultValue={defaultValue?.modelId} | |
| labelText="Choose a model" | |
| disabled={disabled} | |
| onChange={(event) => { | |
| onSelect(event.target.value); | |
| }} | |
| warn={warn} | |
| warnText={warnText} | |
| > | |
| {models.map((model) => { | |
| return ( | |
| <SelectItem | |
| key={`${model.modelId}-selector`} | |
| disabled={ | |
| disabledModels && | |
| disabledModels | |
| .map((entry) => entry.modelId) | |
| .includes(model.modelId) | |
| } | |
| value={model.modelId} | |
| text={model.name} | |
| ></SelectItem> | |
| ); | |
| })} | |
| </Select> | |
| ); | |
| }); | |