import { useMemo, memo } from 'react'; import { useRecoilValue } from 'recoil'; import { EditIcon } from 'lucide-react'; import { Controller, useFormContext, useFormState } from 'react-hook-form'; import AlwaysMakeProd from '~/components/Prompts/Groups/AlwaysMakeProd'; import { SaveIcon, CrossIcon } from '~/components/svg'; import { TextareaAutosize } from '~/components/ui'; import { useLocalize } from '~/hooks'; import { cn } from '~/utils'; import store from '~/store'; const { PromptsEditorMode, promptsEditorMode } = store; type Props = { name: string; isEditing: boolean; setIsEditing: React.Dispatch>; }; const PromptEditor: React.FC = ({ name, isEditing, setIsEditing }) => { const localize = useLocalize(); const { control } = useFormContext(); const editorMode = useRecoilValue(promptsEditorMode); const { dirtyFields } = useFormState({ control: control }); const EditorIcon = useMemo(() => { if (isEditing && !dirtyFields.prompt) { return CrossIcon; } return isEditing ? SaveIcon : EditIcon; }, [isEditing, dirtyFields.prompt]); return (

{localize('com_ui_text_prompt')}
{editorMode === PromptsEditorMode.ADVANCED && ( )}

!isEditing && setIsEditing(true)} > {!isEditing && ( )} isEditing ? ( setIsEditing(false)} /> ) : ( {field.value} ) } />
); }; export default memo(PromptEditor);