setState(prev => ({ ...prev, editingMessageIndex: index }))}
onRegenerateMessage={(index) => regenerateMessageMutation.mutate(index)}
editingMessageIndex={state.editingMessageIndex}
onSaveEdit={(content) => editMessageMutation.mutate({ content })}
onCancelEdit={() => setState(prev => ({ ...prev, editingMessageIndex: null }))}
/>
{/* Chat Input */}
{state.attachments.length > 0 && (
setState(prev => ({ ...prev, previewDocument: doc }))}
onRemove={handleAttachmentRemove}
maxHeight="100px"
/>
)}
setState(prev => ({ ...prev, input: e.target.value }))}
className="bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 resize-none p-0"
maxHeight={300}
minHeight={50}
onKeyDown={(e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
handleSendMessage();
}
}}
/>
{/* Input Actions */}
setState(prev => ({ ...prev, isUrlInputOpen: open }))}
urlInput={state.urlInput}
setUrlInput={(url) => setState(prev => ({ ...prev, urlInput: url }))}
handleAttachmentFileUpload={handleAttachmentFileUpload}
handleAttachmentUrlUpload={handleAttachmentUrlUpload}
/>
setState(prev => ({ ...prev, previewDocument: null }))}
/>
);
}