import { Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipTrigger, } from '@janhq/uikit' import { useAtomValue, useSetAtom } from 'jotai' import { InfoIcon } from 'lucide-react' import { useActiveModel } from '@/hooks/useActiveModel' import useUpdateModelParameters from '@/hooks/useUpdateModelParameters' import { getConfigurationsData } from '@/utils/componentSettings' import { toSettingParams } from '@/utils/model_param' import { engineParamsUpdateAtom, getActiveThreadIdAtom, getActiveThreadModelParamsAtom, } from '@/helpers/atoms/Thread.atom' type Props = { title: string name: string description: string placeholder: string value: string } const ModelConfigInput: React.FC = ({ title, name, value, description, placeholder, }) => { const { updateModelParameter } = useUpdateModelParameters() const threadId = useAtomValue(getActiveThreadIdAtom) const activeModelParams = useAtomValue(getActiveThreadModelParamsAtom) const modelSettingParams = toSettingParams(activeModelParams) const engineParams = getConfigurationsData(modelSettingParams) const setEngineParamsUpdate = useSetAtom(engineParamsUpdateAtom) const { stopModel } = useActiveModel() const onValueChanged = (e: React.ChangeEvent) => { if (!threadId) return if (engineParams.some((x) => x.name.includes(name))) { setEngineParamsUpdate(true) stopModel() } else { setEngineParamsUpdate(false) } updateModelParameter(threadId, name, e.target.value) } return (

{title}

{description}