$emit('openImagePreview', url)"
@replyMessage="(msg, idx) => handleReplyMessage(sessionId, msg, idx)"
@replyWithText="(data) => handleReplyWithText(sessionId, data)"
:ref="el => { if (el) messageListRefs[index] = el }"
/>
removeImage(sessionId, idx)"
@removeAudio="removeAudio(sessionId)"
@removeFile="(idx) => removeFile(sessionId, idx)"
@startRecording="handleStartRecording(sessionId)"
@stopRecording="handleStopRecording(sessionId)"
@pasteImage="(file) => handlePasteImage(sessionId, file)"
@fileSelect="(files) => handleFileSelect(sessionId, files)"
@clearReply="clearReply(sessionId)"
/>