|
'use client' |
|
import type { FC } from 'react' |
|
import React from 'react' |
|
import { useTranslation } from 'react-i18next' |
|
import ParamItem from '.' |
|
|
|
type Props = { |
|
className?: string |
|
value: number |
|
onChange: (key: string, value: number) => void |
|
enable: boolean |
|
} |
|
|
|
const VALUE_LIMIT = { |
|
default: 2, |
|
step: 1, |
|
min: 1, |
|
max: 10, |
|
} |
|
|
|
const key = 'top_k' |
|
const TopKItem: FC<Props> = ({ |
|
className, |
|
value, |
|
enable, |
|
onChange, |
|
}) => { |
|
const { t } = useTranslation() |
|
const handleParamChange = (key: string, value: number) => { |
|
let notOutRangeValue = parseFloat(value.toFixed(2)) |
|
notOutRangeValue = Math.max(VALUE_LIMIT.min, notOutRangeValue) |
|
notOutRangeValue = Math.min(VALUE_LIMIT.max, notOutRangeValue) |
|
onChange(key, notOutRangeValue) |
|
} |
|
return ( |
|
<ParamItem |
|
className={className} |
|
id={key} |
|
name={t(`appDebug.datasetConfig.${key}`)} |
|
tip={t(`appDebug.datasetConfig.${key}Tip`) as string} |
|
{...VALUE_LIMIT} |
|
value={value} |
|
enable={enable} |
|
onChange={handleParamChange} |
|
/> |
|
) |
|
} |
|
export default React.memo(TopKItem) |
|
|